Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET自定义错误与编译调试=";假;和安全_Asp.net_Security_Web Config_Custom Error Pages - Fatal编程技术网

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

ASP.NET自定义错误与编译调试=";假;和安全,asp.net,security,web-config,custom-error-pages,Asp.net,Security,Web Config,Custom Error Pages,我一直在读到,基于ASP.NET的网站应该在web.config中启用自定义错误,因为异常将显示堆栈跟踪 我的内存可能有问题(目前无法访问正在开发的ASP.NET网站),但我认为只要web.config文件中的Compilation debug=“false”,就不会显示堆栈跟踪 我对调试标志和堆栈跟踪显示的理解正确吗?如果是这样,那么即使未启用自定义错误,远程用户显示的异常消息也不会是非描述性消息: “由于发生内部服务器错误,无法显示页面。” 如果是这样,那么从安全角度来看,不显示异常的自定义

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

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

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

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


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

否,即使调试标志关闭,堆栈跟踪仍将显示,但堆栈中的每个调用都没有行号

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


显示堆栈跟踪本身并不存在安全风险,但它确实会暴露一些信息,这些信息可能会使网站更容易被黑客攻击。例如,黑客可能会得到一条线索,知道如何对输入进行消毒,并找到解决方法。

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


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

然后使用一个全局自定义错误页面,与无自定义错误页面相比,在最佳实践方面是一种改进,对吗?@harrije:是的,它可以防止错误信息泄露,而且它为碰巧收到错误消息的用户提供了更好的体验。你是说“自定义”错误而不是“客户”错误吗???是的,我更正了输入错误。希望我修复了所有实例。