我需要您对此代码的意见,以实施反垃圾邮件解决方案:
$string = md5($_SERVER['REMOTE_ADDR'])
spam_check
$string
。用它填写spam_check
输入值。
$string
和$_POST['spam_check']
之间执行简单检查,如果它们不匹配则邮件是垃圾邮件...... 这是个好主意吗?它有多安全? 显而易见的优点是它不需要访问者采取任何行动,例如阅读验证码等。
答案 0 :(得分:4)
由于$string
不是非常随机,并且AJAX请求对于试图绕过保护的人来说是可见的,因此很容易构建一个自动检索$string
的自动化,然后触发一个大量垃圾邮件到该表格上。
答案 1 :(得分:3)
我非常喜欢的一种方法是使用CSS来隐藏<input type="text">
元素。机器人不知道它是否隐藏,普通用户永远不会看到它。
看一下这篇文章已经广泛讨论的帖子 Practical non-image based CAPTCHA approaches?
无论如何,考虑到你的真实问题is this a good idea?
,我无法想出它为什么不起作用的原因...我认为数据库部分是不必要的,但那里您可以在上一个链接中看到其他方式...
答案 2 :(得分:0)
有趣。我会谨慎地将其视为垃圾邮件/替代capcha的解决方案,但它确实使垃圾邮件制造者的生活变得更加困难。
但是你应该计划处理禁用javascript的情况(也可能是CSS) - 例如通过为表单分配div,但保留默认消息,然后使用javascript(内联而不是等待onload / pageready)将表单写入其中。
$ string = md5($ _ SERVER ['REMOTE_ADDR'])
这不是一个随机值 - 它不会改变。考虑:
$ string = sha1($ _ SERVER ['REMOTE_ADDR']。rand(1000).time());
(尽管基础算法需要更多操作,但sha1略快于md5。)
使用会话可能是个好主意,并且:
$ _ SERVER ['string'] = sha1(session_id()。rand(1000).time());