PHP表单蜜罐正在被打败

时间:2012-11-09 21:20:07

标签: php forms honeypot

所以我有一个基本的PHP表单蜜罐。它看起来像..

$honeypot = $_POST['honeypot'];    
if($honeypot)
     $error = "You are a bot";
else{   

输入蜜罐显示:隐藏。从技术上讲,它已经工作了一年多,但最近垃圾邮件机器人已经开始打败它了。我的猜测是机器人认为它是一个隐藏的领域,我知道还有其他一些方法可以做到这一点。我可以使该字段可见但很小,与背景颜色相同,将其放在页面上。但我希望得到一些关于其他人在最佳方面的经验的意见。

感谢。

4 个答案:

答案 0 :(得分:4)

使用JavaScript完全删除字段可以达到同样的效果。

无论你做什么,它都可以被机器人击败。如果有人花5分钟手动调整他们的机器人到您的表单,则尤其如此。此外,越来越多的机器人运行完整的webkit浏览器实例,它将像“真正的”用户一样执行JavaScript。

答案 1 :(得分:1)

您可以尝试使用display: hidden之类的内容隐藏输入,或者甚至只删除边框并将其混合到背景中,而不是使用position: absolute; top: 100%。我还会考虑更改honeypot的名称,因为这是一个已知的术语。

一些复杂的机器人可能仍然可以绕过它,但在所有情况下都是如此。如果你没有得到垃圾邮件是至关重要的,你可以使用验证码(我讨厌验证码并且不会向用户推荐它们 - 我认为它们太过于干扰),但有些机器人甚至可以击败验证码。如果你收到很多提交,你可能不得不容忍一点垃圾邮件。

答案 2 :(得分:0)

您可以尝试使用机器人标记的标签使该字段完全可见。遗憾的是,对于真实用户而言,这有点不方便。我还没有理由尝试这个。错误可能会说“感谢你但不允许机器人输入”(请注意好的'谢谢'; - )

答案 3 :(得分:-1)

验证码最好(就像我讨厌它们一样)。

如果这只是一个联系表单,请尝试使用$_POST['password'];。机器人会将此检测为正常的有效字段并将其填入。蜜罐非常明显。