防止垃圾邮件发送到未由登录ID保护的表单站点

3
大家好,
我在我的网站上有一个留言簿功能,但是我一直被垃圾信息所困扰。我使用jquery验证器在前端进行验证,并提出一个数学问题以确保不是垃圾信息工具。此外,我还有一个生成随机数字(表单密钥)的隐藏字段在我的POST请求中。
在后端,我验证表单密钥,检查值是否与某些选择词函数匹配,并且我还说如果存在$_POST。我仍然被垃圾信息所困扰,不确定如何避免这种情况。除了让人们注册网站之外,还有什么方法可以防止所有垃圾信息?非常感谢任何其他建议!
4个回答

5
  1. 使用更好的验证码,如谷歌的 Re-Captcha。
  2. 创建一个蜜罐字段,用 CSS 隐藏。通常情况下,机器人会填写所有字段,因此如果这个隐藏字段被填写了,你就知道它是一个机器人。

哦,我也喜欢蜜罐字段的想法。我从来没有想过这个。 - James
@dqhendricks 另外补充一下,我仍然收到垃圾帖子,所以我决定将CSS放在jQuery中,并以此隐藏表单字段。我会回报并看看这是否更成功。 - user1048676
@user1048676,你是在拒绝那些填写了该字段的请求吗?此外,你真的需要优先考虑使用重新验证。 - dqhendricks
@dqhendricks,我确信我在if逻辑中包含了empty($_POST['lamecaptcha'])来处理表单。我也使用了reCaptcha,但仍然被垃圾邮件攻击。现在我将隐藏表单的CSS添加到了jQuery中,一切都好像没发生过一样。 - user1048676
@user1048676 如果re-captcha无法阻止它们,那么您的输入验证出了严重问题,或者这是人为的垃圾邮件。 - dqhendricks

2

我没有亲自进行测试,但你可以利用机器人发布表单的速度来进行处理。在呈现页面时,你可以设置一个隐藏域并添加一个时间戳。在提交后,在服务器端检查时间戳,如果它与当前时间相差不到五秒钟,则很可能不是人类提交的。请注意保留HTML标签。


谢谢,我也会将这个加入到我的检查列表。 - user1048676

1

我用一些表格解决了这个问题,但是采用了不同的方法,添加了一个必须为空才能提交的表单字段。我发现大多数机器人认为他们需要填写所有文本字段才能提交表单。我的做法是添加一些真正用户永远不会看到的表单字段,并确保它们在 $_POST 中保持为空。

http://aknosis.com/2009/04/17/zero-user-interaction-captcha/


0

用户已经在使用数学验证码,所以我不知道为什么recaptcha会更好。 - j08691
谢谢,但为什么reCAPTCHA比提问数学问题更好?机器人能读取隐藏字段并将该值输入到表单字段中吗?我认为数学问题和reCAPTCHA都可以证明是人在填写表单。 - user1048676
因为机器人可以读取文本。此外,如果他将最终的数学值存储在隐藏字段中,并随表单一起提交,那么机器人只需要在页面上搜索该隐藏字段名称并从中提取值即可。因此,机器人会知道要输入什么作为答案。 - James
是的,机器人可以读取您输出到浏览器的所有内容,包括隐藏字段。 - j08691
@user1048676 是的。抱歉,在我回复j08691时你提出了问题。 - James
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接