更好的蜜罐实施(形式反垃圾邮件)

时间:2016-03-25 20:17:46

标签: forms spam-prevention honeypot

我们如何在我们的网站上摆脱这些垃圾邮件?

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

蜜罐技术的用武之地。它可以让你忽略垃圾邮件,而不会强迫你的用户填写验证码或跳过其他篮球来填写你的表格。

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

更新

自从在我的所有客户网站上实施以下蜜罐后,我们已成功阻止了所有垃圾邮件的 99.5%(数千次提交)。这是没有使用" advanced"中提到的技术。部分,即将实施。

3 个答案:

答案 0 :(得分:82)

概念

通过在表单中​​添加一个只有spambots可以看到的不可见字段,您可以诱骗它们显示它们是垃圾邮件而不是实际的最终用户。

HTML

<input type="checkbox" name="contact_me_by_fax_only" value="1" style="display:none !important" tabindex="-1" autocomplete="off">

这里有一个简单的复选框:

  • 隐藏CSS。
  • 有一个不起眼但明显虚假的名字。
  • 默认值等于0.
  • 无法通过自动填写
  • 填写
  • 无法通过 Tab 键导航到。 (见tabindex

服务器端

在服务器端,我们要检查该值是否存在且值是否为0,如果是,则适当地处理它。 这包括记录尝试和所有提交的字段。

在PHP中,它可能看起来像这样:

$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
}

后备

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

报告

许多服务允许您通过API或上传列表来报告已知的spambot IP。 (例如CloudFlare)请通过报告您找到的所有垃圾邮件和垃圾邮件IP,帮助使互联网变得更安全。

高级

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

  • 纯粹用JS而不是纯CSS隐藏蜜罐字段
  • 使用您实际未使用的真实表单输入名称。 (例如&#34;电话&#34;或&#34;网站&#34;)
  • 在蜜罐算法中包含表单验证。 (大多数最终用户只会得到1或2个字段错误;垃圾邮件通常会导致大部分字段错误)
  • 使用CloudFlare等自动阻止已知垃圾邮件IP的服务
  • 有表单超时,并阻止即时发布。 (在页面加载的3秒内提交的表单通常是垃圾邮件)
  • 防止任何IP每秒发布超过一次。
  • 有关更多提示,请点击此处:How to create a "Nuclear" honeypot to catch form spammers

答案 1 :(得分:8)

真正强制禁止自动完成的一个建议:
autocomplete="off"autocomplete="nope"

更改autocomplete="false"

由于给定的值不是有效值(autocomplete的值仅为onoff),因此浏览器将停止尝试填充该字段。

有关详细信息,请How to Turn Off Form Autocompletion

希望这有帮助。

SYA:)

答案 2 :(得分:3)

我们发现,此处建议的轻微(尽管很简单)变化对我们的联系方式蜜罐的有效性产生了巨大的影响。简而言之,将隐藏字段更改为文本输入,并使该漫游器认为它是密码。像这样:

<input type="text" name="a_password" style="display:none !important" tabindex="-1" autocomplete="off">

您会注意到,此模拟密码输入与复选框示例保持相同的基本准则。是的,文本输入(而不是实际的密码输入)似乎可以正常工作。

这种明显的变化导致我们的垃圾邮件数量急剧下降。