我们有一个带有搜索表单的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 回答
我们的一个解决方案是针对IP记录这些错误,并在应用程序级别阻止访问,如果它们提交的太多 .
这不是防弹,但减少了我们的数量 . 然而,它仍然涉及工程和处理,但节省你不得不与IIS .
然而,你真的很少能做到 . 他们会垃圾邮件你的表格和阻止IP只是一个短期的解决方案,他们会打你多个IP等 . 只要确保你的验证是紧的,你不容易受到注射攻击之类的事情而忽视它,这是事实这些天的生活 .
我们经常受到这样的打击,尤其是来自中国这样的地方 .
在web.config文件中,在标记内插入 httpRuntime 元素,其属性为 requestValidationMode="2.0" .
例:
您可以尝试其他解决方案 . 每当发生此类错误时,它会将您的页面重定向到默认网址(请在
defaultRedirect=" "
中设置页面) .因此,机器人将无法再将您的收件箱或其他现在正在创建的问题发送垃圾邮件!
这对我有用 . 我可以通过添加web.config文件来删除错误:
整个代码:
我希望这有帮助 .