ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值

说明: ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本。该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击。如果此类型的输入适用于您的应用程序,则可包括明确允许的网页中的代码。

 

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(Content="

 

sdfdddd

...")中检测到有潜在危险的 Request.Form 值。

 

字段NewContent的值HTML代码含有HTML 标记或脚本。该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击。

即使在Action中加了 [ValidateInput(false)]也不管用,原来是下面代码了引起的:

var urlReferrer = Request.Params["UrlReferrer"];

ViewBag.UrlReferrer = urlReferrer;

把上面两行代码注释掉是,就正常了。原来在MVC中使用了 Request.Params来获取参数值验证时对加 [ValidateInput(false)]是还够的,还要在配置文件Web.config中的结点httpRuntime加入requestValidationMode="2.0",例如:

 

</connectionString>

<system.web>

<compilation debug="true" targetFramework="4.0"/>

<httpRuntime targetFramework="4.0"  requestvalidationMode="2.0"/>

 

如果是代码中没有Request.Params来获取参数值,只在Action方法加上 [ValidateInput(false)]就可以了。在使用aspx页面时可通过在 Page 指令或 配置节中设置 validateRequest="false" 禁用请求验证。但在MVC(Razor)中使用无效。只需要在页面所请求的Action上加入 ValidateInput(false)即可。

例如:

 

[ValidateInput(false)]
public ActionResult Add(){
   .............
}

即可解决问题.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值