如何阻止机器人发布和导致异常

时间:2011-03-21 10:06:55

标签: .net exception spam bots

我有一个表单,任何人都可以填写有关某些内容的评论,此表单不在登录区域内。

在越来越多的机器人试图输入垃圾邮件后,我开始使用验证码。 现在的问题是,某种机器人并没有放弃。我每天都会收到大量异常电子邮件,因为机器人试图输入“危险”数据而.NET不允许这样做,因为请求已经过验证。 验证码根本没用,因为它甚至不需要填写以试图发布会导致异常的帖子。机器人似乎并不理解它每次都会失败。

昨天我尝试更改文本框的名称,并添加了“蜜罐”。但它与验证码相同的问题,在实际发布到后面的代码之前发生异常。

我是否真的必须设置ValidateRequest =“false”以使机器人更进一步并可能停止发出请求?

非常感谢所有想法。

2 个答案:

答案 0 :(得分:1)

你可以:

  • 在页面上设置ValidateRequest =“false”,打开XSS的可能性。
  • 覆盖Page_Error(),然后捕获异常并以自己的方式处理它。

我认为你可能必须将2结合起来才能使其发挥作用。

protected void Page_Error(object sender, EventArgs e)
{
  Exception oops = Server.GetLastError();

  if(oops.GetBaseException() is System.Web.HttpRequestValidationException) 
  {
    System.Diagnostics.Debug.Assert(false);
  }
}

答案 1 :(得分:0)

也许机器人非常愚蠢。而不是在HTML中的那个表单框用javascript加密它。这可能会使机器人充分混淆。