0

我继承了一个使用框架 4.0 的 MVC asp.net 应用程序。

我收到可怕的“从客户端检测到潜在危险的 Request.Form 值”错误,我的所有研究都让我相信这应该可以解决它:

<system.web>
    <httpRuntime requestValidationMode="2.0" />
    <pages validateRequest="false" />
</system.web>

但是,我已将其添加到我的 web.config 中,但仍然出现错误。我已经走到尽头了,我错过了什么?

4

3 回答 3

1

除了您所做的之外,您还必须使用ValidateInput属性来装饰您的方法。

[ValidateInput(false)]
public ActionResult MyActionMethod(string myParameter)
{
    // Method implementation goes here... 
}

不过,还有一个替代方案,如果您想处理整个站点的验证,您可以实现自己的请求验证器并将其绑定到 web.config 中。看看这篇关于如何完全实现它的博客文章。

基本上,创建一个继承自的类,RequestValidator然后将其连接到 web.config。

<httpRuntime requestValidationType=”Globals.CustomRequestValidation”/>

希望这会有所帮助!

于 2012-08-30T18:36:47.183 回答
0

采取另一种方法。在 中httpRuntime,指向您的自定义验证类。这种方式可以完全控制传入的请求,因为在处理管道开始时,验证器会在每个请求上触发。

特别是,如果您将验证器实现为 return true,您将无条件地接受所有传入的请求。

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx

于 2012-08-30T18:29:41.377 回答
0

最简单的方法是从验证系统中删除您想要的字符。

这是元素requestPathInvalidCharacters的属性及其默认值。httpRuntime

<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,:,\" />
<!-- the unescaped characters are: < > * % & : \  -->

删除您要授权的字符,请求将起作用。

于 2016-07-09T14:15:56.090 回答