UEditor-从客户端(editorValue="<p>xxxx</p>")中检测到有潜在危险的 Request.Form 值。

来源:互联网 发布:有秒杀软件吗 编辑:程序博客网 时间:2024/06/04 18:56

经常我们需要从客户端传一些HTML片段到后端,比如:博客发布一篇文章、发布留言等。

但是你可能会遇到错误,类似下图:


1. 其实错误中已经说明的很清楚了,并且告诉了解决方法:

从客户端(txtUEditor="<p>XXX</p>")中检测到有潜在危险的 Request.Form 值。

说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://Go.microsoft.com/fwlink/?LinkId=153133。 

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(txtUEditor="<p>a</p>")中检测到有潜在危险的 Request.Form 值。

2. 另一种方法是在web.config中的pages节中设置,如:

<system.web ><pages validateRequest="false" ></pages ></system.web >

但是这种方式并不好,太过暴力,因为它会使整个项目所有的页面都不会再验证提交的内容,安全性大大降低。

3. 推荐做法:

给Action加一个Attribute:[ValidateInput(false)],这样只会让该页面不验证提交的内容,而不会影响到其他页面。

[HttpPost][ValidateInput(false)]public ActionResult Publish(FormCollection form){    return View();}

我使用的是.Net 4.5、MVC 5。
0 0