.net 4.0 ValidateRequest="false" 无效

当页面输入框默认情况下输入“<”或者“>”的时候。按照访问策略,这将导致一些安全问题,诸如:跨站脚本攻击(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的默认方式进行工作。

时间: 2024-08-29 20:45:05

.net 4.0 ValidateRequest="false" 无效的相关文章

&lt;pages validateRequest=&quot;false&quot;/&gt;在.net4.0中无效的问题

再web.config中设置<pages validateRequest="false"/>在.net4.0中无效的问题 解决方案: <system.web> <httpRuntime requestValidationMode="2.0"/> <pages validateRequest="false"/> </system.web> 新增<httpRuntime request

ASP.NET 4.0 设定 了 validateRequest="false" 仍然会出现 具有潜在危险 Request.QueryString 的错误消息

摘要:ASP.NET 4.0 设定 了 validateRequest="false" 仍然会出现 具有潜在危险Request.QueryString的错误消息 微软的asp.net网页都会默认进行Request Validation,但若是想规避这样的内建行为.(建议仍要有其他的方法来防范XSS攻击) 通常我们可以在.aspx中的Page Tag设定: ? 或是直接对整个站台设定Web.Config中??下设定全域的 不过,假如你现在在ASP.NET 4.0 的环境下的话,就算进行上

区分JS中的undefined,null,&quot;&quot;,0和false

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库 字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和 不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boole

javascript中的undefined,null,&quot;&quot;,0和false的云集

在各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boolean值本身就是tru

android在view.requestFocus(0)返回false的解决办法

我们有时候想让listview的第一行自动获取到焦点,我们就会使用view.requestFocus(0)来操作,而有时候并不生效,debug后显示rerurn为false. 这是因为我们获取焦点太早,listview控件还为加载完毕.可以尝试一下方法解决: listview.post(new Runnable(){ @Override public void run(){ view.requestFocus(0); } }); ok,问题解决! android在view.requestFocu

(转)通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证

通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证 说明:   请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击.通过在   Page   指令或   配置节中设置   validateRequest=false   可以禁用请求验证.但是,在这种情况下,强烈建议应用程序显式检查所有输入. 解决方法: 方法1. 在.aspx页面中添加: <%@   Page   valida

Ajax中return false无效 怎么解决?

var flag=0; $.ajax({ url:"widget?type=member_register&ajax=yes&action=checkname&username="+username, dataType:"json", async: false, success:function(json){ userLoad = false; if(json.result==1){ var tip= '<div class="

var a =0;if(a){ alert(&#39;真的&#39;) },不能弹出来东西,因为if(0)=if(false),所以就直接不执行了

1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 <script> 7 var a =0; 8 9 if(a){ 10 alert('真的') 11 } 12 </sc

Python标准库:内置函数compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

这个函数用来编译一段字符串的源码,结果可以生成字节码或者AST(抽像语法树),字节码可以使用函数exec()来执行,而AST可以使用eval()来继续编译. 参数source是一串字符串的源码,或者是AST对象数组. 参数filename是读取字符串的文件对象,如果不是从文件里读取源码来编译,那么这里可以放一些用来标识这些代码的字符串. 参数mode是用来指明那种表示的源码类型:如果是exec类型,表示这是一个序列语句,可以进行运行:如果是eval类型,表示这是一个单一的表达式语句,可以用来计算