1

我一直在阅读基于 ASP.NET 的网站应该在 web.config 中启用自定义错误,因为异常会显示堆栈跟踪。

我可能内存有问题(目前无法访问正在开发的 ASP.NET 网站),但我想只要在 web.config 文件中编译 debug="false",那么堆栈跟踪就不会显示.

我对调试标志和堆栈跟踪显示的理解是否正确?如果是这样,那么即使未启用自定义错误,向远程用户显示的唯一消息也不会是非描述性消息:

“该页面无法显示,因为发生了内部服务器错误。”

如果是这样,那么从安全的角度来看,不显示异常的自定义错误页面是否可以?

4

2 回答 2

2

不,即使调试标志关闭,仍然会显示堆栈跟踪,但堆栈中的每个调用都不会有行号。

非描述性消息是浏览器通常显示的内容,而不是来自服务器的实际错误消息,除非您更改配置。任何想要通过引发错误消息来公开信息的人都知道如何做到这一点。

显示堆栈跟踪本身并没有安全风险,但它确实暴露了一些可能使网站更容易被黑客入侵的信息。例如,黑客可能会知道如何对输入进行清理并找到绕过它的方法。

于 2010-07-06T22:58:29.757 回答
0

自定义错误消息几乎总是优先于抛出的默认错误。它优雅地将您的用户发送到他们可以继续浏览您的网站而无需返回并重试的位置。

在您的 web.Config 中关闭 DEBUGGING 非常重要,而且不仅仅是不显示行号和堆栈跟踪......它还告诉编译器以发布模式构建,从而显着优化性能。一旦你的应用程序投入生产,所有的调试都应该被禁用。

于 2010-07-06T23:49:03.113 回答