.net报错----A potentially dangerous Request.Form value was detected from the client
问题
.net项目,项目表单里面需要提交带有<strong></strong>或者<br/>
这种带有html标签的字符串,提交标签时候就会出现A potentially dangerous Request.Form value was detected from the client
错误,如下面截图:
原因
默认情况下,ASP.NET中所有的输入控件会对引发跨站点脚本和SQL注入攻击的潜在不安全因素进行验证,默认的validateRequest为true,通常抛出异常的方式来禁止恶意的内容。所以一般情况下建议就将ValidateRequest设置为true,以对所有的ASP.NET请求进行验证。
解决
一些场景中,需要将带有HTML的内容进行提交,解决方案:
方案1.<%@ Page ValidateRequest="false" %>
方案2.在配置文件Web.config
里面配置
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
注意:在.NET4.0或者更高版本的框架里面,需要在web.config
里面额外配置。
<configuration>
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
</configuration>
而在ASP.NET MVC
里面配置是不一样的,需要在后端的方法上面进行以下配置可以解决(楼主搜索很久,上面的配置没起作用,下面这种方式可解决):
[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(FormCollection form)
{
}
参考链接:
https://stackoverflow.com/questions/4361907/asp-net-mvc-3-validaterequestfalse-not-working-with-formcollection
https://stackoverflow.com/questions/81991/a-potentially-dangerous-request-form-value-was-detected-from-the-client