取消ASP.NET中的请求验证(Disabling Request Validation)部分转载Entlib.Net

来源:互联网 发布:mac卸载java 8 编辑:程序博客网 时间:2024/05/22 13:57

       在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>


第二种方法,设置validationRequestfalse。例:

XML

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

第三种方法,在一个独立页面中,可以对页面的指令做设置,在@Page中设置validationRequestfalse。例:

HTML

<@ Page validateRequest="false" %>




By  Wander.Zh

0 0
原创粉丝点击