我一直读到基于 ASP.NET 的网站应该在 web.config 中启用自定义错误,因为异常会显示堆栈跟踪。
我的内存可能有问题(目前无法访问正在开发的 ASP.NET 网站),但我认为只要在 web.config 文件中 Compilation debug="false",那么堆栈跟踪就会不显示。
我对调试标志和堆栈跟踪显示的理解是否正确?如果是这样,那么即使未启用自定义错误,向远程用户显示的唯一异常消息也不会是非描述性消息:
“由于发生内部服务器错误,该页面无法显示。”
如果是这样,那么从安全角度来看,不显示异常的自定义错误页面不是可以吗?
最佳答案
不,即使调试标志关闭,仍会显示堆栈跟踪,但不会显示堆栈中每个调用的行号。
除非您更改配置,否则浏览器通常会显示非描述性消息,而不是来自服务器的实际错误消息。任何想要通过引发错误消息来暴露信息的人都知道如何做到这一点。
显示堆栈跟踪本身并不存在安全风险,但它确实会暴露一些可能使攻击网站变得更容易的信息。例如,黑客可能会得到关于如何清理输入并找到解决方法的线索。
关于ASP.NET 自定义错误与编译调试 ="false"和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3190740/