2012-12-12 33 views
2

我们有一个具有搜索表单的Web应用程序,允许用户输入一些文本,并根据他们输入的内容限制结果。最近我们开始收到以下错误:System.Web.HttpRequestValidationException:从机器人的客户端检测到潜在危险的Request.Form值?

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到搜索页面,页面只是回发到自己,在回发时是搜索完成时。

+1

只是忽略或阻止机器人?为什么你会考虑禁用验证(也许我错过了什么)? –

+2

禁用validateRequest将结束添加行到您的日志并给bot更多的自由。不是我所说的双赢。 – lboshuizen

+0

我们使用ELMAH来接收错误,所以它充斥着我们的收件箱,这就是为什么我们想到了这个问题,否则我们会忽略它。不想停止ELMAH,因为我们可能会错过真正的错误。 – Paritosh

回答

2

一个解决方案,我们不得不为记录对IP这些错误,并在应用程序级别阻止访问,如果他们提交了太多。

这不是防弹但减少我们有个数。但是它仍然涉及工程和处理,但是可以节省你不得不使用IIS的时间。

但是有一点确实可以做。他们会将你的表格封杀,阻止IP只是一个短期解决方案,他们会打你多IP等等。只要确保你的验证是紧密的,你不容易受到注入攻击等事情的影响而忽略它,这是一个事实这些日子里的生活。

我们经常被打到这个样子,尤其是像中国这样的地方。

1

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

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

因此,机器人将不再能够垃圾邮件您的收件箱或它现在正在创建的其他问题!

6

在web.config文件中,在标签内,插入的httpRuntime元件与属性requestValidationMode = “2.0”

例子:

<configuration> 
<system.web> 
<httpRuntime requestValidationMode="2.0" /> 
</system.web> 
</configuration> 
0

这为我工作。我能够在web.config文件中添加删除错误:

<httpRuntime requestValidationMode="2.0" /> 

整个代码:

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

我希望这有助于。

相关问题