如何:显示安全错误信息
来源:互联网 发布:淘宝卖家店铺网址 编辑:程序博客网 时间:2024/04/29 07:51
在您的应用程序显示错误信息时,它不应该泄露有助于恶意用户攻击您系统的信息。例如,如果您的应用程序试图登录数据库时没有成功,则显示的错误信息不应该包括它正在使用的用户名。
有许多方法可以控制错误信息,包括:
将应用程序配置为不向远程用户显示详细错误信息。(远程用户是指在 Web 服务器计算机上工作但未请求页的用户。)您也可以选择将错误重定向到应用程序页。
只要可行就包括错误处理,并编写您自己的错误信息。在您的错误处理程序中,可以进行测试以确定用户是否为本地用户并做出相应的响应。
在捕捉所有未处理异常并将它们发送到一般错误页的页级别或应用程序级别上,创建全局错误处理程序。这样,即使您没有预料到某个问题,至少用户不会看到异常页。
将应用程序配置为不向远程用户显示错误
在应用程序的 Web.config 文件中,对 customErrors 元素进行以下更改:
将 mode 属性设置为 RemoteOnly(区分大小写)。这就将应用程序配置为仅向本地用户(即,您 - 开发人员)显示详细的错误。
(可选)包括指向应用程序错误页的 defaultRedirect 属性。
(可选)包括将错误重定向到特定页的 <error> 元素。例如,您可以将标准 404 错误(未找到页)重定向到您自己的应用程序页。
下面的代码示例显示 Web.config 文件中的典型 customErrors 块。
复制<customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx"> <error statusCode="404" redirect="NoSuchPage.aspx"/> <error statusCode="403" redirect="NoAccessAllowed.aspx"/> </customErrors>
包括错误处理
在任何可能生成错误的语句周围使用一个 try-catch 块。
可以选择使用 IsLocal 属性对本地用户进行测试并相应地修改错误处理。值127.0.0.1 等效于 localhost,指示浏览器与 Web 服务器位于同一台计算机上。
下面的代码示例显示一个错误处理块。如果发生错误,则用有关消息的详细信息加载 Session 状态变量,然后应用程序显示可以读取 Session 变量并显示错误的页。(有意写入此错误以便不向用户提供任何可利用的详细信息。)如果用户是本地用户,则提供不同的错误详细信息。在finally 块中,释放开放式资源。
VBC#C++F#JScript复制不支持该语言或没有可用的代码示例。
VBC#C++F#JScript复制try{ sqlConnection1.Open(); sqlDataAdapter1.Fill(dsCustomers1);}catch (Exception ex){ if(Request.IsLocal) { Session["CurrentError"] = ex.Message; } else { Session["CurrentError"] = "Error processing page."; } Server.Transfer("ApplicationError.aspx");}finally { this.sqlConnection1.Close();}
您也可以创建一个这样的错误处理程序,它在页级别上或为整个应用程序捕捉所有未处理的异常。
创建全局错误处理程序
若要在页中创建全局处理程序,请创建 TemplateControl.Error 事件的处理程序。若要创建应用程序范围的错误处理程序,请在 Global.asax 文件中将代码添加到HttpApplication.Error 事件。只要您的页或应用程序中发生未处理的异常,就会相应地调用这些方法。您可以从GetLastError 方法获取有关最新错误的信息。
说明: 如果您具有全局错误处理程序,则它优先于在 customErrors 配置元素的 defaultRedirect 属性中指定的错误处理。
下面的代码示例显示一个处理程序,它获取有关当前错误的信息,将其放在 Session 变量中,然后调用可以提取和显示错误信息的一般性错误处理页。
VBC#C++F#JScript复制不支持该语言或没有可用的代码示例。
VBC#C++F#JScript复制protected void Application_Error(Object sender, EventArgs e){ Session["CurrentError"] = "Global: " + Server.GetLastError().Message; Server.Transfer("lasterr.aspx");}
- 如何:显示安全错误信息
- php如何显示错误信息
- IIS7 如何显示、返回详细HTTP500错误信息
- 如何在 SharePoint中显示详细错误信息
- PHP防止错误信息显示暴露,影响安全的解决办法
- 显示错误信息
- 显示错误信息
- 显示错误信息
- login控件账户密码为空时如何显示错误信息
- 如何自定义Struts2表单验证后的错误信息显示格式 .
- linux中tomcat部署项目报错,如何显示错误信息?
- 如何让网页显示友好的错误信息页面
- 关于错误信息的显示
- 不显示脚本错误信息
- 显示服务器端详细错误信息
- ASP 显示完整错误信息
- sharepoint显示详细错误信息
- struts2错误信息显示
- oracle透明数据加密技术(TDE)
- linux下C语言的学习
- Hibernate数据查询
- XML解析
- 如何退出Google的Gmail信箱
- 如何:显示安全错误信息
- SQL SERVER 2000 事务 复制 配置 完整版
- 【转】MySQL日期时间函数大全
- cisco3560三层交换机vlan间路由配置实例
- QQ OpenAPI for Java
- git merge vs rebase vs cherry-pick
- 数组升序降序最大值最小值统计的类模板及实例
- Linux命令里面两个很经典的命令:join和tr(原创 )
- 关于密码输入输出************的问题