ASP.NET 自定义错误与编译调试 ="false"和安全性

标签 asp.net security web-config custom-error-pages

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

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

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

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

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

最佳答案

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

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

显示堆栈跟踪本身并不存在安全风险,但它确实会暴露一些可能使攻击网站变得更容易的信息。例如,黑客可能会得到关于如何清理输入并找到解决方法的线索。

关于ASP.NET 自定义错误与编译调试 ="false"和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3190740/

相关文章:

c# - 如何对 ArrayList(int) 进行排序

ios - Apple 应用内购买收据验证

javascript - 如何在客户端浏览器中存储 RSA 私钥以获得更好的用户体验?

c# - WIF 的 SessionAuthenticationModule 始终为空。为什么?

c# - 将 asp.net 成员资格 web.config 设置移动到数据库这甚至可能吗?

asp.net - 从项目中的一个 ASP.NET 页面中删除主题

javascript - 将值从 Angular 传递到 webapi put 方法

asp.net - 澄清 web.config 安全性以拒绝 IP 地址

asp.net - 如何获取链接按钮的 url

asp.net - 防止下拉列表中的用户输入?