【问题标题】:Blank submission spam bot空白提交垃圾邮件机器人
【发布时间】:2015-05-29 17:52:34
【问题描述】:

我正试图想出一些方法来对抗只提交带有空白条目的表单的垃圾邮件机器人。

我的表单使用 JQuery 来检查字段是否已填写,并检查电子邮件字段是否已正确填写。然而,这个垃圾邮件机器人正在设法解决这个问题(通过禁用 JavaScript?)并且能够提交一个完全空白的表单。所以我需要一种方法来阻止这种情况,但这里的问题是我不能使用我在网上找到的任何类型的验证码插件等,因为我不能使用 PHP,所以我需要客户端验证任何东西我可以用它来对抗它,但我的另一个问题是,如果这个垃圾邮件机器人能够禁用 JavaScript,那么我肯定会采取任何措施,例如蜜罐验证码或在页面加载时禁用表单 5 秒,无法正常工作,因为 JavaScript 刚刚被关闭,并且这个垃圾邮件机器人再次绕过所有内容并完成了空白提交。

【问题讨论】:

  • 答案很简单:您无法通过纯客户端验证与机器人作战。您需要在服务器上进行某种验证,因为通常,您必须假设客户端完全控制浏览器中运行的任何代码,并且它可以选择替换您的任何验证代码在浏览器中拥有自己的自动验证。
  • 使用简单的验证码系统,没有图像,就像在 javascript 中生成的两个随机数一样。如果这些数字的总和是正确的,请提交表格。为了防止在禁用 javascript 的情况下提交,只需省略操作 uri 直到填写表单,然后在提交表单之前也通过 javascript 附加操作。无论如何,您必须在服务器端验证所有内容。正确的是做两次验证(前1个,后1个)。

标签: jquery forms captcha spam


【解决方案1】:

如果您想绕过垃圾邮件机器人发布空白条目而不添加验证码插件/图像等。

选项 #1:

使用普通验证码,我们会强制用户填写验证码值并在发布表单时在服务器端验证相同的值,但使用这个技巧,我们将采用相反的方式。

默认情况下,所有垃圾邮件机器人访问站点都禁用了 javascript。它们通常被编码为填写所有表单字段。

所以你可以做的是在表单中添加一个隐藏字段,任何名称,比如“hidden_​​captcha”。

现在您的服务器端代码将是这样的,如果该隐藏字段已填充,则该条目将由垃圾邮件机器人发布,因为普通访问者无法看到您的隐藏字段并提交数据。

Spambot 只是在表单中查找字段并提交。

这样您就不需要添加验证码插件/图像并过滤垃圾邮件机器人发布的所有条目。

选项 #2:

另一种方法是,添加一个名为“js_fill”的隐藏字段。现在将 JS 代码放入您的页面中,该代码会生成随机值并填写该字段。

在此之后,您的服务器端检查代码将如下所示:

if($_POST['js_fill'] != '' && $_POST['hidden_captcha'] == '') {
  // Valid Entry
} else {
  //Something Wring Here
}

让我知道这是否清楚或需要对这个概念有更多的理解。

【讨论】:

  • 感谢您与我分享!好吧,我已经尝试了隐藏字段路由,但发现因为这个垃圾邮件只是所有空白条目,那么无论哪种方式,这个隐藏字段都会是空白的,因此空白垃圾邮件仍然会通过?如果你明白我的意思?基本上我无法检查隐藏字段中的条目,因为这个垃圾邮件始终是空白的!
  • @CorrineJW 我已经修改了答案。
  • 是的,我相信这会完美运行!非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 2012-10-20
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 2011-07-05
  • 2012-06-12
相关资源
最近更新 更多