请慎用ASP.Net的validateRequest=”false”属性

请慎用ASP.Net的validateRequest=”false”属性阅读全文下载代码:http://www.cckan.net/forum.php?mod=viewthread&tid=74在客户端的文体框里输入“例如”等字符的时候为出现这样的错误序安全的尝试,如跨站点的脚本攻击。通过在Page指令或配置节中设置validateRequest=false可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。 异常

大家好,又见面了,我是你们的朋友全栈君。

阅读全文下载代码:http://www.cckan.net/forum.php?mod=viewthread&tid=74

在客户端的文体框里输入“<任何字符>例如<user>”等字符的时候为出现这样的错误

序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。 

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(txtName=”<fd>”)中检测到有潜在危险的 Request.Form 值。

这是没有设置<pages validateRequest =”true”>这个属性这是默认的,当我们改为false的时候这样的错误就不会出现了,但是我们不能只是这样改,这样虽说是没有错了, 但是你有没有想过程序也就不安全了啊,

正确的做法是在你当前页面添加Page_Error()函数,来捕获所有页面处理过程中发生的而没有处理的异常。然后给用户一个合法的报错信息。如果当前页面没有Page_Error(),这个异常将会送到Global.asaxApplication_Error()来处理,你也可以在那里写通用的异常报错处理函数。如果两个地方都没有写异常处理函数,才会显示这个默认的报错页面呢。

 

请慎用ASP.Net的validateRequest="false"属性

  protected void Page_Error(object sender, EventArgs e)
    {

            Exception ex 
= Server.GetLastError();
            
if (ex is HttpRequestValidationException)
            {

                Response.Write(
请不要输入这样的字符,呵呵);

                Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。
            }
    }

 

这是ASP.Net提供的一个很重要的安全特性。因为很多程序员对安全没有概念,甚至都不知道XSS这种攻击的存在,知道主动去防护的就更少了。ASP.Net在这一点上做到默认安全。这样让对安全不是很了解的程序员依旧可以写出有一定安全防护能力的网站。

  但是,当我Google搜索 HttpRequestValidationException 或者 “A potentially dangerous Request.Form value was detected from the client”的时候,惊奇的发现大部分人给出的解决方案竟然是在ASP.Net页面描述中通过设置 validateRequest=false 来禁用这个特性,而不去关心那个程序员的网站是否真的不需要这个特性。看得我这叫一个胆战心惊。安全意识应该时时刻刻在每一个程序员的心里,不管你对安全的概念了解多少,一个主动的意识在脑子里,你的站点就会安全很多。

  为什么很多程序员想要禁止 validateRequest 呢?有一部分是真的需要用户输入”<>”之类的字符。这就不必说了。还有一部分其实并不是用户允许输入那些容易引起XSS的字符,而是讨厌这种报错的形式,毕竟一大段英文加上一个ASP.Net典型异常错误信息,显得这个站点出错了,而不是用户输入了非法的字符,可是自己又不知道怎么不让它报错,自己来处理报错。

  对于希望很好的处理这个错误信息,而不使用默认ASP.Net异常报错信息的程序员们,你们不要禁用validateRequest=false。

 例子 http://www.cckan.net/forum.php?mod=viewthread&tid=73

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132849.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 错误代码0xc0000005是什么错误_错误状态0xc0000006

    错误代码0xc0000005是什么错误_错误状态0xc0000006在使用电脑过程中经常会出现某些错误代码,如0xc0000005错误故障,造成电脑无法正常运行,这要怎么办呢?今天小编和大家分享电脑出现0xc0000005错误代码的解决方法。具体方法如下:1、首先按下“win+r”打开运行,输入regedit按下回车。2、随后依次定位到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Exp…

    2022年9月27日
    0
  • 2020年公认最快的dns(国内好用的dns)

    简介:2020国内速度最快的dns推荐原版周公解梦分析梦见儿子死了的吉凶境遇安全,推荐长辈惠泽,推荐承受父祖之余德,前辈之提拔,而得大成功及发展,原命若喜水木者更佳。若凶数者:成又转败,陷于离乱变动,至晚年终归孤独失败,又早年有落水灾遇,生涯九死一生之命格。国内又须戒色变及刀杀之危。梦到蛇和蛇一头,速度暗示你可能会受到别人的欺骗,或受到别人欺骗。最快梦见蛇的心理学解梦从做梦内容的本义来说:推荐动物…

    2022年4月13日
    199
  • openssl安装教程(windows7系统,超详细)

    openssl安装教程1.安装包安装1.1所需资源链接1.2安装流程1.3测试是否安装成功1.4安装过程中的问题2.自己编译源码再安装1.安装包安装1.1所需资源链接openssl安装包下载地址:http://slproweb.com/products/Win32OpenSSL.html如果用谷歌浏览器打开的话,可以翻译成中文:对应英文如下:根据自己电脑的配置选择需要的版本,我这里选择的第1个Win64OpenSSLv1.1.1iLight。1.2安装流程下载好之后,直接双击即

    2022年4月11日
    2.8K
  • Linux学习—退出vi编辑模式

    在Linux学习中总结退出vi编辑模式

    2022年2月24日
    62
  • SQL语句面试题目_sql基础知识面试题

    SQL语句面试题目_sql基础知识面试题我自己编辑总结的sql面试题目大全,也是每条都验证过的第一类:sql面试题(学生表_课程表_成绩表_教师表)表结构,节选自:http://www.cnblogs.com/qixuejia/p/3637735.html题目一,节选,自:https://wenku.baidu.com/view/cda288f1b90d6c85ed3ac671.html题目二,节选,自:http://ww…

    2022年8月29日
    2
  • MFC Java 使用socket 中文乱码解决方法(一)「建议收藏」

    MFC Java 使用socket 中文乱码解决方法(一)「建议收藏」MFCJava使用socket中文乱码解决方法(一)1、在使用MFC做服务端,Java做客户端时(1)客户端向服务端发送数据 Java发送代码:PrintWriterprintWriter= newPrintWriter( newBufferedWriter( newOutputStreamWriter( client.getOutputStream(),”gbk”)),true); //Windows一般默认为GB

    2022年7月14日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号