Forms 更好的蜜罐实现(形成反垃圾邮件) 我们如何在我们的网站上清除这些垃圾邮件?

Forms 更好的蜜罐实现(形成反垃圾邮件) 我们如何在我们的网站上清除这些垃圾邮件?,forms,spam-prevention,honeypot,Forms,Spam Prevention,Honeypot,每个网站都会在某个时候成为受害者。你如何处理它会影响你的客户,而且大多数解决方案都会阻止一些人填写你的表格 这就是蜜罐技术的用武之地。它允许您忽略垃圾邮件,而无需强迫用户填写验证码或跳过其他障碍来填写表单 这篇文章纯粹是为了帮助其他人在他们的网站表单上实施蜜罐陷阱。 更新: 自从在我的客户的所有网站上实施以下蜜罐以来,我们成功阻止了所有垃圾邮件的99.5%(数千次提交)。这不需要使用即将实施的“高级”部分中提到的技术。概念 通过在表单中添加一个只有Spambot才能看到的不可见字段,您可以诱使

每个网站都会在某个时候成为受害者。你如何处理它会影响你的客户,而且大多数解决方案都会阻止一些人填写你的表格

这就是蜜罐技术的用武之地。它允许您忽略垃圾邮件,而无需强迫用户填写验证码或跳过其他障碍来填写表单

这篇文章纯粹是为了帮助其他人在他们的网站表单上实施蜜罐陷阱。


更新: 自从在我的客户的所有网站上实施以下蜜罐以来,我们成功阻止了所有垃圾邮件的99.5%(数千次提交)。这不需要使用即将实施的“高级”部分中提到的技术。

概念 通过在表单中添加一个只有Spambot才能看到的不可见字段,您可以诱使他们显示他们是Spambot而不是实际的最终用户

HTML 退路 这就是日志的来源。如果您的某个用户最终被标记为垃圾邮件,您的日志将帮助您恢复任何丢失的信息。它还可以让你研究任何运行在你网站上的机器人,如果它们将来被修改以绕过你的蜜罐

报告 许多服务允许您通过API或上传列表来报告已知的spambot IP。(例如)请报告您发现的所有垃圾邮件和垃圾邮件IP,帮助使互联网成为一个更安全的地方

先进的 如果你真的需要打击更高级的spambot,你还可以做一些额外的事情:

  • 纯用JS而不是纯CSS隐藏蜜罐字段
  • 使用实际使用的表单输入名称。(如“电话”或“网站”)
  • 在蜜罐算法中包含表单验证。(大多数最终用户只会得到1或2个错误的字段;Spambot通常会得到大部分错误的字段)
  • 使用CloudFlare之类的服务,自动阻止已知的垃圾邮件IP
  • 有表单超时,并防止即时发布。(在页面加载的3秒内提交的表单通常是垃圾邮件)
  • 防止任何IP每秒发布一次以上
  • 如需了解更多信息,请查看此处:

一个建议是真正强制执行无自动完成:
通过
autocomplete=“nope”
autocomplete=“false”

由于给定值无效(
autocomplete
的值仅为
on
off
),浏览器将停止尝试填充该字段

有关更多详细信息

希望这有帮助

SYA:)

我们发现,这里的建议稍有不同(尽管很简单),我们的联系形式蜜罐的有效性就有了巨大的差异。简而言之,将隐藏字段更改为文本输入,并使机器人认为它是密码。大概是这样的:

$honeypot = FALSE;
if (!empty($_REQUEST['contact_me_by_fax_only']) && (bool) $_REQUEST['contact_me_by_fax_only'] == TRUE) {
    $honeypot = TRUE;
    log_spambot($_REQUEST);
    # treat as spambot
} else {
    # process as normal
}
<input type="text" name="a_password" style="display:none !important" tabindex="-1" autocomplete="off">

您将注意到,这个模拟密码输入保持与复选框示例相同的基本准则。是的,文本输入(相对于实际的密码输入)似乎工作得很好


这显然是一个很小的变化,导致我们的垃圾邮件数量急剧下降。

“默认值等于0”,但示例中的值为“1”?这是有意的吗?@edank附带了一些限制,例如,如果他们只查看非
display:none
visibility:hidden
、或
opacity:0
的字段,他们在页面最初呈现时将找不到任何不在屏幕上的表单(这非常常见),更不用说大多数机器人甚至不获取css/js文件(为什么它们只关心HTML
元素)。因此,虽然他们可以尝试检测蜜罐的css,但这根本不值得。检测什么是“可见的”实际上有很多复杂的问题,但我刚才说的是最常见的原因。既然你已经用display:none(或CSS)隐藏了它,那么tabindex=-1不是变得多余了吗?也就是说,隐藏字段无论如何都不能被标记到?我担心tabindex=-1为机器人提供了一个很好的简单方法来查找蜜罐字段@DaviddCeFreitas——复选框值为“1”。但只有在用户选中该复选框时,它才会提交该值。机器人将选中该框,php将“1”读为布尔值TRUE并检测机器人。@DannyF请阅读完整答案和评论,然后再提出改进建议。这些都已经涵盖了。此外,这个答案从尽可能基本开始,然后提出改进建议。这样做是为了在提供尽可能多的信息的同时尽可能降低这些进入壁垒。您能否详细说明为什么这更有效?人们的期望是他们仍然会填写?还是他们会认为这是一个密码字段,然后不提交就离开?为什么不使用密码字段而不是文本?@deflame该字段的作用是让机器人填写它,从而通知我们该请求是垃圾邮件。文本字段蜜罐的想法是让它吸引机器人(密码字段就不那么吸引人了)。也就是说,因为我不知道机器人是如何编码的,所以我不能具体说明它为什么工作。如果你自己做一些测试,我会对你的发现感兴趣。到目前为止,运行三个蜜罐,其中一个是type=“password”版本,机器人将填充所有3个或根本没有。。。所以在这一点上他们似乎是平等的。但没有误报。
<input type="text" name="a_password" style="display:none !important" tabindex="-1" autocomplete="off">