,,详解Asp.net web.config customErrors 如何设置

,,详解Asp.net web.config customErrors 如何设置

本文主要详细介绍如何设置Asp.net web . config的Customerrors。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。

摘要

CustomErrors在开发和部署中也经常看到CustomErrors mode=' Off '/。设置它,以便您可以在页面上看到详细的错误信息。但也为黑客攻击提供了线索。

customErrors

该节点有三个可选设置。

On:服务器开发的最安全选项,因为它总是隐藏错误消息。

RemoteOnly:向大多数用户显示一般错误信息,但向具有服务器访问权限的用户显示完整的错误消息。换句话说,只有自定义错误显示给远程客户端,而ASP.NET错误显示给本地主机。默认值。

关闭:最易受攻击的选项,向每个访问网站的用户显示详细的错误消息。

详细的错误信息可能会暴露应用程序的内部结构。例如,如果在编写的sql语句中报告了错误,则数据表和sql语句可能会暴露,这是非常不安全的。在Off-set网站中,黑客会不断尝试,传递不同的参数,使你的网站出错,然后暴露你的应用程序的内部结构。

mode=Off

例如:

system.web

身份验证模式='None' /

编译调试='true' targetFramework='4.5' /

httpRuntime target framework=' 4.5 '/

customErrors mode=' Off ' default redirect=' error '

/客户错误

/system.web

直接在TestAction中抛出异常,然后我们就可以看到类似下面的黄页。

在黄页上,您可以看到页面对应于逻辑堆栈信息,从而暴露了项目结构信息。非常不安全。

那么如果mode=Off,并且在事件Application_Error中记录并清除错误,会看到什么呢?

受保护的void应用程序错误(对象发送方,EventArgs e)

{

var context=HttpContext。当前;

如果(上下文!=空)

{

异常objErr=上下文。server . GetLastError();

如果(objErr!=空)

{

string err=' Application _ Error事件中捕获的错误/n ' '错误在:'

请求。URL . ToString()'/n错误消息:' objErr。Message.ToString()

/nStack Trace:' objErr。stack trace . ToString();

、日志逻辑

服务器。clear error();

}

}

}

customErrors mode=' Off ' default redirect=' Error '

/客户错误

DefaultRedirect指定发生错误时浏览器指向的默认URL。如果未指定defaultRedirect,将显示一个常规错误。URL可以是绝对的(例如,http://www。***.com/ErrorPage.htm)或相对。相对URL(如/ErrorPage.htm)相对于指定defaultRedirect的Web.config文件,而不是导致错误的网页。以波浪符号(~)开头的URL(如~/ErrorPage.htm)表示指定的URL相对于应用程序的根路径。

通过上面的操作,如果你设置了Off,在Application_Error事件中捕捉一个异常,并服务器。ClearError(),那么如果你报告一个错误,你会在首页看到一个空白页。

这也可以说明,如果应用出错,会先触发Application_Error事件,然后页面上就看不到结果了。

mode=On

当设置了On模式时,如果应用程序有错误,它将跳转到用户定义的错误页面。此处使用了defaultRedirect属性,但错误状态代码=' 500' redirect=' error'/

mode=RemoteOnly

字面上,只是远程,只是远程什么?看一个例子。目前在编码环境下,通过vs调试状态,想要远程访问的用户可以使用本机作为服务器。那么这个是本地的,远程访问的浏览器是远程的。

如您所见,在服务器端,access仍然可以看到黄页,这就是上面提到的ASP.NET错误。那么,当我们在服务器上部署站点,然后在本地访问它时,会发生什么呢?

当客户端访问服务器的url时,它将跳转到默认的自定义错误页面。那么服务器端是什么情况呢?

注意:只有自定义错误显示在远程客户机上,而ASP.NET错误显示在本地主机上。

总结

因此,不要在生产环境中关闭customErrors。打开RemoteOnly或,并定义一个自定义错误页。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: