4

我们有一个带有搜索表单的 Web 应用程序,允许用户输入一些文本,我们根据他们输入的内容限制结果。最近我们开始收到以下错误:

System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$results_search="...967.hcpm, <a href="http://www....").

这个错误每天都在发生,这似乎来自机器人,查看错误似乎机器人正在将 html ahref 链接放入搜索字段并尝试搜索,从而导致错误。

在四处搜索后,我发现有两种方法可以处理这个问题,要么使用 Jquery,要么将 validateRequest 设置为 false,然后在页面后面的代码中使用 htmlencode。有谁知道 jquery 代码是否适用于机器人?我不确定机器人是如何做到这一点的,如果它点击页面并点击按钮或以其他方式发送请求,因为按钮点击是导致回发触发搜索的原因,我们使用 POST 所以没有发送任何内容url 到搜索页面,页面只是回发给自己,而在 PostBack 上是搜索完成的时候。

4

4 回答 4

8

在 web.config 文件的标记中,插入httpRuntime具有 属性的元素requestValidationMode="2.0"

例子:

<configuration>
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</configuration>
于 2013-06-05T09:22:50.163 回答
2

我们的一种解决方案是针对 IP 记录这些错误,如果提交太多,则在应用程序级别阻止访问。

这不是炸弹证明,但减少了我们的数量。但是,它仍然涉及工程和处理,但您不必费心 IIS。

然而,你能做的真的很少。他们会向您的表单发送垃圾邮件并且阻止 IP 只是一个短期解决方案,他们会从多个 IP 等攻击您。只要确保您的验证是严格的,并且您不容易受到注入攻击之类的事情的影响并忽略它,这是事实这些天的生活。

我们经常受到这样的打击,尤其是来自中国这样的地方。

于 2012-12-12T15:29:40.437 回答
1

您可以尝试其他解决方案。defaultRedirect=" "每当发生此类错误时,它会将您的页面重定向到默认 url(请在 中设置页面)。

<system.web>
    <customErrors mode="On" defaultRedirect="~/Home/Index"/>
</system.web>

因此,该机器人将不再能够向您的收件箱发送垃圾邮件或它现在造成的其他问题!

于 2013-01-21T09:33:02.823 回答
1

这对我有用。我可以通过添加 web.config 文件来消除错误:

<httpRuntime requestValidationMode="2.0" />

整个代码:

<httpRuntime requestValidationMode="2.0" maxRequestLength="102400" />
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0">

我希望这有帮助。

于 2013-12-13T18:51:21.010 回答