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中改变全局设定(<system.web><pages validateRequest="false"></pages></system.web>)来忽略此校验。


但在.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中)设置
<configuration>
<system.web>
<pages  validateRequest=“false“>
</system.web>
</configuration>
这种设置仅对ASP.NET4.0以下的有效。而在ASP.NET4.0版本上,这种配置是不够的,还要多加一行,如下:

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

</system.web>
</configuration>


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


推荐连接:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值