在不使用验证码的情况下阻止垃圾评论 [已关闭]
有哪些非验证码方法可以阻止我的评论中的垃圾邮件?
根据我的经验,目前最有效的方法是通过CSS使用户不可见的蜜罐输入字段(最好使用几种不同的方法,例如可见性:隐藏,将大小设置为0像素,以及远离浏览器窗口的绝对位置);如果它们无论如何都被填满了,你可以假设它是一个垃圾邮件机器人。
这篇博客描述了一种相当复杂的方法,我自己尝试过(到目前为止100%成功),但我怀疑你可以通过跳过所有带有散列字段名称的东西并添加一些简单的蜜罐字段来获得相同的结果。
1) 将与会话相关的信息添加到表单中 示例:
<input type="hidden" name="sh" value="<?php echo dechex(crc32(session_id())); ?>" />
然后在回发时,检查会话是否有效。
2)仅Javascript。在提交时使用 Javascript 注入。例:
<input type="hidden" id="txtKey" name="key" value="" />
<input type="submit" value="Go" onclick="document.getElementById('txtKey').value = '<?php echo dechex(crc32(session_id())) ?>';" />
3) 每个IP、用户或会话的时间限制。这很简单。
4) 随机化字段名称:
<?php
$fieldkey = dechex(crc32(mt_rand().dechex(crc32(time()))));
$_SESSION['fieldkey'] = $fieldkey;
?>
<input type="text" name="name<?php echo $fieldkey; ?>" value="" />
<input type="text" name="address<?php echo $fieldkey; ?>" value="" />
然后,您可以在服务器端检查它。