requestValidationMode =“2.0”实际上做了什么?

时间:2011-06-01 19:23:48

标签: asp.net-mvc validation asp.net-mvc-3 asp.net-mvc-validation


我正在尝试解决“从客户端检测到一个有潜在危险的Request.Form值”问题,并且SO答案和Scott Hanselman建议设置

<httpRuntime requestValidationMode="2.0" />
在Web.config中

(同时为有问题的方法添加属性) 我意识到这会将验证模式更改为ASP.NET 2.0,但这意味着什么? 而且,这种变化是否有任何我应该注意的副作用?

感谢。

2 个答案:

答案 0 :(得分:15)

查看MSDN's HttpRuntimeSection.RequestValidationMode Property上的说明。

  

<强> 2.0 即可。仅对页面启用请求验证,而不是对所有HTTP请求启用。另外,页面的请求验证设置   配置文件或@Page指令中的元素(如果有)   在单个页面中用于确定请求的页面   验证

答案 1 :(得分:1)

查看ASP.NET Request Validation&gt;

  

ASP.NET中的请求验证功能提供了一定的级别   针对跨站点脚本(XSS)攻击的默认保护。在   在以前版本的ASP.NET中,请求验证已启用   默认。但是,它仅适用于ASP.NET页面(.aspx文件和   他们的类文件)并且只有在那些页面正在执行时才会发生。

     

在ASP.NET 4中,默认情况下,为所有人启用请求验证   请求,因为它在BeginRequest阶段之前启用   HTTP请求。因此,请求验证适用于请求   所有ASP.NET资源,而不仅仅是.aspx页面请求。这包括   请求,例如Web服务调用和自定义HTTP处理程序。请求   当自定义HTTP模块正在读取时,验证也处于活动状态   HTTP请求的内容。

     

因此,请求现在可能会发生请求验证错误   以前没有触发错误。要恢复到的行为   ASP.NET 2.0请求验证功能,添加以下设置   在Web.config文件中:

<httpRuntime requestValidationMode="2.0" />
  

但是,我们建议您分析任何请求验证错误   确定是否存在现有处理程序,模块或其他自定义代码   访问可能是XSS攻击的潜在不安全的HTTP输入   载体