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

问题描述 投票:27回答:4

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

#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烦恼。

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

php spam spam-prevention honeypot
4个回答
4
投票

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

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


20
投票

老问题,但我想我会插话,因为我一直在为Drupal(Honeypot)维护一个模块,该模块使用Honeypot垃圾邮件预防方法和基于时间的保护(用户不能以低于X的形式提交表单)秒,并且每次连续失败的提交都会以指数方式增加X)。使用这两种方法,我听说过许多网站(examples)已经消除了几乎所有的自动垃圾邮件。

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


10
投票

使用以下技术,我阻止了100%的垃圾邮件。

  1. 蜜罐与显示:无。如果失败,运行额外的脚本来收集IP地址并将其写入.htaccess文件中的deny from line。
  2. 计算评论字段上的URL数量。如果失败,警告只是因为这可能是人类。
  3. 衡量发布时间。如果不到5秒,显示错误消息并让他们再试一次,因为人类可以用自动填充插件写得非常快。
  4. 使用crontab修剪htaccess文件,因此拒绝行不会超过30行(相应地调整)。

使用IP地址拒绝访问是非常有效的,因为机器人不断尝试使用相同的IP(如果他们更改了IP,那么我将新的IP放在htaccess上就没问题了)。我每天用crontab自动修剪.htaccess文件,这样文件就不会太大。我调整要阻止的IP数量,因此具有相同IP的相同机器人将被阻止大约一周左右。我注意到机器人使用相同的IP进行了3天的攻击。

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


2
投票

自2010年左右以来,我已经在三种形式上使用了蜜罐验证码,直到最近,它才得以实现,并且没有任何修改。我们刚刚做了一些改变,我们认为这些改变将阻止大多数垃圾邮件,至少在它们变得更复杂之前。大致来说,这就是我们设置它的方式:

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

但是随着时间的推移,机器人出现了问题,最简单的形式就是被垃圾邮件砸了。具有前端验证的表单保持良好,我认为这是因为他们也不接受任何旧的文本输入,但需要将电子邮件地址构造为电子邮件地址,依此类推。被证明易受攻击的一种形式只有一个用于评论的文本输入和两个用于联系信息的可选输入(电话号码和电子邮件);重要的是,我认为,这些投入都不包括前端验证。

添加验证很容易,我们很快就会这样做。但就目前而言,我们已经添加了其他人所建议的“时间陷阱”。我们在页面加载时设置时间变量,并将该时间戳与表单提交的时间进行比较。目前我们允许在页面上10秒后提交,但有些人建议三秒钟。我们会根据需要进行调整。我想在添加前端验证之前看看这对垃圾邮件流量有什么影响。

所以我的经验的快速总结是这样的:蜜罐工作得很好,就像它最初设想的那样。 (我不记得我在哪里找到它,但是this post与十多年前我所看到的第一次非常相似。)加上client-side validation enabled by HTML5似乎更有效。我们认为,对于那些过于仓促的提交我们现在强加的服务器端限制会更好。

最后,我会提到像reCaptcha这样的解决方案对我们而言是不合适的。我们花了大量时间使用Google的地图API开发网络应用程序,直到谷歌在没有任何警告且没有过渡建议的情况下更改其API时,它一直运行良好。我们不会两次嫁给同一个虐待配偶。

© www.soinside.com 2019 - 2024. All rights reserved.