Additional information: A potentially dangerous Request.Form value was detected from the client

刚刚在写一个ASP.NET MVC项目,用到UEditor的时候,后台保存数据爆了一个错误:Additional information: A potentially dangerous Request.Form value was detected from the client。

这是因为浏览器传过来的数据带有HTML标签,被服务器当作危险请求而拒绝了。

在.net4.0以前,可以在ASPX的页面上加上属性ValidateRequest=false或在web.config中改变全局设定(来忽略此校验。


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


在ASP.NET之前的版本中,请求验证也是默认开通的,但是发生在页面级(aspx)的,并且只在请求执行的时候生效,因此,在旧的版本中,我们配置方式是:
在页面级别(aspx中)设置
ValidateRequest=”false”(这种方式在ASP.NET MVC中不适用)
或者
在全局级别(Web.config中)设置





这种设置仅对ASP.NET4.0以下的有效。而在ASP.NET4.0版本上,这种配置是不够的,还要多加一行,如下:

在全局级别(Web.config中)设置






网上还在说法说requestValidationMode只要设置成4.0以下就可以,作者没有亲自测试过,但大多都是设置成2.0就可以了,作者也建议设置成2.0的。


推荐连接:

http://update.tuond.com/potentially-dangerous-Request.html

http://blog.csdn.net/civilman/article/details/5605516

你可能感兴趣的:(ASP.NET)