我需要您对这段用于实现反垃圾邮件解决方案的代码的意见:
- 生成页面/表单时,会创建一个随机字符串,例如。像
$string = md5($_SERVER['REMOTE_ADDR'])
- 这个字符串被插入到数据库中,并设置为在假设 2 小时后过期,这样我们就不会填满数据库
- 在页面加载时,表单有一个没有值的隐藏输入字段,我们将其命名为
spam_check
- 页面加载后 10、15 或 20 秒后,自动触发 AJAX 请求,尝试从数据库中检索
$string
并填写spam_check
输入值 - 提交表单时,如果不匹配,我们将在来自数据库的
$string
和$_POST['spam_check']
之间执行简单检查该邮件是垃圾邮件...
这是个好主意吗?它有多安全? 明显的优势是它不需要访问者执行任何操作,例如阅读验证码等。
最佳答案
由于 $string
不是很随机,并且 AJAX 请求对于试图绕过您的保护的人来说是可见的,因此很容易构建一个自动检索 $string
,然后将大量垃圾邮件发送到该表单上。
关于PHP - 验证码替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470274/