从客户端检测到潜在危险的Request.QueryString值

时间:2015-04-23 20:42:23

标签: c# ajax asp.net-mvc

所以,我知道为什么会发生这种情况,但只是不确定解决问题的最佳方法。 我正在使用的应用程序具有ViewModel并绑定/映射模型中的属性。

然后将此VM绑定到View并使用@ Html.TextBox()帮助程序。

这是一个例子:DB的实际文本值是:

"Université de Montréal"

DOM中HTML的渲染输出是:

<input class="validate" id="EmployerName" name="EmployerName" type="text" value="Universit&amp;#233; de Montr&amp;#233;al" />

现在,一旦加载了页面,它就会通过序列化表单并发送它来进行AJAX GET调用。

此时,它已经命中控制器(因为我将[ValidateRequest(false)]属性应用于该控制器操作,但我得到了错误:

A potentially dangerous Request.QueryString value was detected from the client (employername="Universit&#233; de Montr&#233..."). 

此时,我对如何解决问题以及让请求正常处理感到困惑。 我知道通过在web.config中添加修复它,我不想在网站范围内更改它。

任何想法都是让这个请求正常处理的最佳方法吗?

控制器操作:

[ValidateInput(false)] 
[OutputCache(NoStore = true, Duration = 0)]
public ActionResult GetMoreData(Criteria crit)
{
...
}

1 个答案:

答案 0 :(得分:0)

所以,我设法解决了这个问题。

使用MVC TextBoxFor时,它会自动编码字符串(这很好)。

将[ValidateInput(false)]属性添加到控制器操作可以调用action方法。然后我简单地做了一个HtmlDecode ON SAVE。在加载时,我只是HtmlEncode字符串。

如果您向用户显示了很多属性但它可以正常工作,那么这不是最佳解决方案。