在ASP.NET Application 开发过程中,在web page 页面的文本框输入 HTML 代码时,会出现如下异常信息:
从客户端(txtProductName=”…….. <font color=’red’><b…”)中检测到有潜在危险的 Request.Form 值。
说明: ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本。该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击。如果此类型的输入适用于您的应用程序,则可包括明确允许的网页中的代码。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=212874。
异常详细信息: System.Web.HttpRequestValidationException: 从客户端(txtProductName=”… <font color=’red’><b…”)中检测到有潜在危险的 Request.Form 值。
解决办法:
上述异常时因为ASP.NET增加了一个新特性:Request Validation(请求验证),检查HTTP 请求中是否包含一些潜在的威胁内容。潜在的危险内容指的是在请求的body、header、Query string或者 Cookies 中的任何 HTML 脚本或者JavaScript 代码。ASP.NET 执行这一检查是因为上述内容可能添加一些恶意的代码。
但是,如果在公司内部的intranet 环境部署的Application,则可以取消这一验证。
具体参考如下文章:Request Validation in ASP.NET
该文章提供了在ASP.NET Web Forms、ASP.NET MVC 和 ASP.NET Web Pages 三种方式来取消请求验证(disable request validation)。
------------------------------------------------------------------------------------------------------
以上部分转载自http://www.entlib.net/?p=2149
感谢Entlib.net团队的分享。
-------------------------------------------------------------------------------------------------------
之所以转载这一片文章,是我在页面富文本混合输入时,遇到了相同的问题,根据原博客的参考文件,解决了这一问题。
以下做一些简要的摘录翻译Request Validation in ASP.NET中的解决方法。
-------------------------------------------------------------------------------------------------------
第一种方法,设置httpRuntime元素的requestValidationMode属性为"2.0"。例:
XML
<system.web> <httpRuntime requestValidationMode="2.0" /> </system.web>
第二种方法,设置validationRequest为false。例:
XML
<configuration> <system.web> <pages validateRequest="false" /> </system.web> </configuration>
第三种方法,在一个独立页面中,可以对页面的指令做设置,在@Page中设置validationRequest为false。例:
HTML
<@ Page validateRequest="false" %>
By Wander.Zh