在我的评论中阻止垃圾邮件的一些非验证码方法是什么?
根据我的经验,目前最有效的方法是通过CSS对用户不可见的蜜罐输入字段(最好使用几种不同的方法,例如可见性:隐藏,设置大小为0像素,绝对定位远远超出浏览器窗口); 如果他们无论如何都被填满你可以认为它是一个spambot.
这个博客描述了一个我自己尝试过的相当复杂的方法(到目前为止已经100%成功),但我怀疑你可以通过使用散列字段名称跳过所有内容并只添加一些简单的蜜罐字段来获得相同的结果.
1)将与会话相关的信息添加到表单中示例:
然后在回发时,检查会话是否有效.
2)仅限Javascript.在提交时使用Javascript注入.例:
3)每个IP,用户或会话的时间限制.这很简单.
4)随机化字段名称:
然后你可以在服务器端检查它.
Akismet有一个API.有人为此编写了一个包装类(BSD liscense):http://cesars.users.phpclasses.org/browse/package/4401.html
还有一个贝叶斯过滤器类(BSD Liscense) http://cesars.users.phpclasses.org/browse/package/4236.html
这是在不使用验证码的情况下阻止垃圾邮件机器人或暴力攻击的简单技巧.
把它放在你的表格中:
把它放在你的PHP代码中
$human_typing_time = 5;/** page load (1s) + submit (1s) + typing time (3s) */ $vars = explode(',', $_POST['hash']); if(md5($secret_key.$vars[1]) != $vars[0] || time() < $var[1] + $human_typing_time){ //bot? exit(); }
根据表格的重量,您可以增加或减少$ human_typing_time.
也有蜜罐理论。我喜欢将蜜罐与其他减少垃圾邮件的方式结合使用,以达到最佳效果。
http://www.projecthoneypot.org/