从客户端中检测到有潜在危险的值 (System.Web.Mvc.ValidateInputAttribute 类)

创建时间:
2014-10-28 22:55
最近更新:
2018-08-24 14:22

AllowHtmlAttribute & ValidateInputAttribute

2018-08-23 开始统一使用 [AllowHtml] public string Xxx { get; set; } 代替 [ValidateInput(false)] public ActionResult Mmm(Ppp p),因为前者控制粒度更细。Note: Tl.IdGen.SnowflakeValueProvider 类的 ValueProviderResult GetValue(string key, bool skipValidation) 中 会跳过标有 [ValidateInput(false)] 的 Action 的所有参数。而标有 [AllowHtml] 的属性只跳过自已,不影响到其他。

  1. System.Web.Mvc.AllowHtmlAttribute 类 - 通过跳过属性的请求验证,允许请求在模型绑定过程中包含 HTML 标记。强烈建议应用程序显式检查所有禁用请求验证的模型,以防止脚本攻击。默认情况下,ASP.NET MVC 框架将在模型绑定期间检查请求,以确定请求是否包含可能很危险的内容,如 HTML 标记。如果检测到 HTML,模型绑定将引发错误。如果属性是使用 AllowHtmlAttribute 特性标记的,则 ASP.NET MVC 框架将在模型绑定期间跳过该属性的验证。有关更多信息,请参见 Marcin Dobosz 的博客上的文章 Granular Request Validation in ASP.NET MVC 3Granular Request Validation in ASP.NET MVC 3 Beta
  2. System.Web.Mvc.ValidateInputAttribute 类 - 表示一个特性,该特性用于标记必须验证其输入的操作方法。

错误页面的主要内容备份

说明: ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本。该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击。如果此类型的输入适用于您的应用程序,则可包括明确允许的网页中的代码。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=212874。

异常详细信息: System.Web.HttpRequestValidationException: 从客户端...中检测到有潜在危险的 Request.Form 值。
or
异常详细信息: System.Web.HttpRequestValidationException: 从客户端...中检测到有潜在危险的 Request.QueryString 值。

ValidateInputAttribute 测试记录

测试环境:.NET4 MVC4

提交表单 (非 AJAX) 时,如 action 未加 [ValidateInput(false)],则当被提交的数据中包含 <br/>&#60;br/>&#60;br/&#62; 时都将抛出:
'System.Web.HttpRequestValidationException'
Message = A potentially dangerous Request.Form value was detected from the client (Title="<br/>").

译文:从客户端中检测到有潜在危险的 Request.Form 值。

但是 &lt;br/&gt; 可通过验证,提交成功。

当然,加 [ValidateInput(false)] 之后,一切均可提交成功。

Web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <httpRuntime requestValidationMode="2.0" />
        <pages validateRequest="false" />
    </system.web>
</configuration>

Resource

  1. System.Web.Mvc.ValidateInputAttribute 类 - 表示一个特性,该特性用于标记必须验证其输入的操作方法。
  1. .NET MVC "从客户端...中检测到有潜在危险的 Request.Form 值" 的解决方法
  2. .NET MVC "从客户端...中检测到有潜在危险的 Request.Form 值" 的解决方法
  3. ValidateInput() 方法