zoukankan      html  css  js  c++  java
  • 转:alidateRequest=false 在.Net 4.0 中不管用

    原文:http://blog.xunbin.com/Article/158/
    ASP.NET 4.0验证请求(更新)
    A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$txtCode="<code></code>").

    Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. To allow pages to override application request validation settings, set requestValidationMode="2.0" in the configuration section. After setting this value, you can then disable request validation by setting validateRequest="false" in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case. For more information, see http://go.microsoft.com/fwlink/?LinkId=153133.

    Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$txtCode="<code></code>").


    --------------------------------------------------------------------------------
    Version Information: Microsoft .NET Framework Version:4.0.21006; ASP.NET Version:4.0.21006.1
    在安装了Visual Studio 2010 Beta2之后,当页面输入框默认情况下输入“<”或者“>”的时候。按照访问策略,这将导致一些安全问题,诸如:跨站脚本攻击(cross -site scripting attack)。而这个问题的更准确描述则是,当你在安装了.NET Framework 4.0以上版本后,当你的应用程序以.NET Framework 4.0为框架版本,你的任意服务器请求,都将被进行服务器请求验证(ValidationRequest),这不仅包括ASP.NET,同时也包括Web Services等各种HTTP请求,不仅仅针对aspx页面,也针对HTTP Handler,HTTP Module等,因为这个验证(Valify)的过程,将会发生在BeginRequest事件之前。

    基于以上原理,在ASP.NET之前的版本中,请求验证也是默认开通的,但是发生在页面级(aspx)的,并且只在请求执行的时候生效,因此,在旧的版本中,我们只需要按以下方式配置即可:

    在页面级别(aspx中)设置
    ValidateRequest="false"
    或者
    在全局级别(Web.config中)设置
    <configuration>
        <system.web>
            <pages  validateRequest="false">

    但是,以上设置仅对ASP.NET4.0以下有效。在ASP.NET4.0版本上,我们需要更多一行的配置:

    在全局级别(Web.config中)设置
    <configuration>
        <system.web>
            <httpRuntime  requestValidationMode="2.0" />

    这一点其实在发生错误的页面中已经有说明了。在实际使用过程中,不仅如此,而且我发现requestValidationMode只要设置成小于 4.0就可以,比如:1.0,2.0,3.0,3.9都是可以的,错误提示中指明用2.0,目的只是说明用ASP.NET 2.0的默认方式进行工作。

    参考链接:

    ASP.NET4.0白皮书-将会引起崩溃的改变之“ASP.NET Request Validation”
    ASP.NET请求验证(< 4.0) [该文档尚未更新至4.0版本,本文所提及的部分,并未涉及。]


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/civilman/archive/2010/05/18/5605516.aspx

  • 相关阅读:
    Netscape中使用event对象
    attachEvent 与 addEventListener 对同一物件事件多次绑定的触发顺序
    ADO.NET Entity Framework如何:定义具有修改存储过程的模型(实体框架)
    ADO.NET Entity Framework插入和更新数据(实体框架快速入门)
    ADO.NET Entity Framework如何:通过每种类型一个表继承以定义模型(实体框架)
    ADO.NET Entity Framework SSDL 规范
    ADO.NET Entity Framework 如何:使用 EdmGen.exe 生成对象层代码
    ADO.NET Entity Framework CSDL、SSDL 和 MSL 规范
    ADO.NET Entity Framework MSL 规范
    ADO.NET Entity Framework配置实体框架(实体框架任务)
  • 原文地址:https://www.cnblogs.com/w3live/p/1932844.html
Copyright © 2011-2022 走看看