蜜罐技术对垃圾邮件的效果如何?

时间:2010-09-01 21:57:20

标签: php spam spam-prevention honeypot

“蜜罐”,我的意思或多或少是这种做法:

#Register form
<style>
    .hideme{
        display:none;
        visibility: hidden;
    }
</style>
<form action="register.php">
    Your email: <input type="text" name="u-email" />
    Choose a password: <input type="text" name="passwd" />
    <div class="hideme">
        Please, leave this field blank: <input type="text" name="email" />  #the comment is for text-browser users
    </div>
    <input type="submit" value="Register" autocomplete=off />
</form>

//register.php
<?php
if($_POST['email'] != ''){
    die("You spammer!");
}
//otherwise, do the form validation and go on.
?>

更多信息here

显然,真实字段是用随机哈希命名的,而蜜罐字段可以有不同的名称(电子邮件,用户,网站,主页等等),这是spambot通常填写的。

我喜欢这种技术,因为它不会让用户对CAPTCHA感到恼火。

你们有没有这种技术的经验?它有效吗?

4 个答案:

答案 0 :(得分:18)

老问题,但我认为我会参与进来,因为我一直在为Drupal(Honeypot)维护一个模块,该模块使用Honeypot垃圾邮件预防方法和基于时间的保护(用户可以' t以小于 X 秒的速度提交表单,并且每次连续失败的提交时X都会呈指数增长)。使用这两种方法,我听说过很多很多站点(examples)几乎消除了所有自动垃圾邮件。

我使用Honeypot +时间戳取得了比使用任何基于CAPTCHA的解决方案更好的成功,因为我不仅阻止了大多数垃圾邮件发送者,我也不是punishing my users

答案 1 :(得分:9)

通过以下技术,我可以阻止100%的垃圾邮件。

  1. 蜜罐与display:none。 如果失败,请运行额外的脚本来收集IP地址并将其写入.htaccess文件中的deny from line。
  2. 计算评论字段中的网址数量。 如果失败,警告只是因为这可能是人类。
  3. 衡量发布时间。 如果不到5秒,显示错误消息并让他们再试一次,因为人类可以用自动填充插件写得非常快。
  4. 使用crontab修剪htaccess文件,因此拒绝行不会超过30行(相应调整)。
  5. 使用IP地址拒绝访问非常有效,因为机器人一直试图使用相同的IP(如果他们更改了IP,那么我将新IP放在htaccess上就没问题)。我每天用crontab自动修剪.htaccess文件,这样文件就不会太大了。我调整要阻止的IP数量,因此具有相同IP的相同机器人将被阻止大约一周左右。我注意到机器人使用相同的IP进行了3天的攻击。<​​/ p>

    第一个#1技巧阻止约99%,#2阻止约1%,机器人不会通过这2个,所以#3可能没有必要。

答案 2 :(得分:4)

它的效果相对较好,但是,如果机器人创建者迎合你的页面,他们会看到(甚至有一个常规的设置来检查)并且很可能会相应地修改他们的机器人。

我的偏好是使用reCaptcha。但上面会阻止一些机器人。

答案 3 :(得分:0)

自2010年左右起,我就以三种形式使用蜜罐验证码,并且直到最近才进行了有效的修改。我们刚刚进行了一些更改,我们认为这些更改将阻止大多数垃圾邮件,至少直到它们变得更加复杂为止。概括地说,这是我们的设置方法:

每个表单上的一个输入字段都被隐藏(显示:在CSS类属性中未指定),默认值为“”。对于屏幕阅读器等,隐藏的输入标签使该字段必须保持为空。默认情况下完全没有长度,如果该字段中有任何内容,我们将使用服务器端代码(在本例中为ColdFusion,但可以是任何语言)停止提交表单。当我们以这种方式中断提交时,我们会向用户提供成功的反馈(“感谢您的评论”或类似内容),因此不会出现外部失败的迹象。

但是,随着时间的流逝,僵尸程序明智起来,我们最简单的形式也被垃圾邮件所打击。带有前端验证的表单保存得很好,我想这是因为它们也不仅仅接受任何旧的文本输入,而是要求电子邮件地址的结构必须像电子邮件地址一样,依此类推。一种被证明容易受到攻击的表格只有一个文本输入用于注释,两个可选输入用于联系信息(电话号码和电子邮件);重要的是,我认为这些输入都不包括前端验证。

添加验证非常容易,我们将尽快完成。不过,到目前为止,我们已经添加了其他人以“时间陷阱”方式提出的建议。我们在页面加载时设置一个时间变量,并将该时间戳记与提交表单的时间进行比较。目前,我们允许页面上10秒钟后提交,尽管有些人建议3秒钟。我们将根据需要进行调整。我想先看看这对垃圾邮件流量有什么影响,然后再添加前端验证。

因此,我的经验的简要总结是:蜜罐工作得与最初设想的一样好。 (我不记得我最初在哪里找到它,但是this post与我十多年前第一次看到它时非常相似。)添加client-side validation enabled by HTML5似乎更有效。我们认为,现在对那些过于苛刻的提交施加服务器端限制会更好。

最后,我要提一提的是像reCaptcha这样的解决方案对我们来说并不可行。我们花费了大量时间使用Google的map API开发网络应用,并且在Google更改其API时没有警告和过渡建议的情况下,效果一直很好。我们不会再同一个虐待对象结婚两次。