让CAPTCHA暂时为用户粘贴?

我有一个论坛,允许匿名发布,受CAPTCHA保护。为了方便用户,我为这样的用户设置了一个Cookie,持续了大约一个月,因此用户不会一遍又一遍地获得CAPTCHA。在最简单的形式中,cookie被称为
no_captcha_for_one_month
,它的值是
1
。当用户匿名返回并发帖时,他不会获得CAPTCHA。 有谁看到这个缺陷?一个论坛垃圾邮件发送者只需要正确填写验证码一次,并将cookie信息用于他的机器人,他就去了。 我想到了创造性并使用服务器端哈希,其中包括例如用户的IP地址和一些秘密盐来生成cookie值,但它当然仍然对这个IP地址有效。 我得到的印象是问题很愚蠢,我试图解决一些无法解决的问题。     
已邀请:
有了这样的解决方案,总是可以将cookie用于机器人。无论你尝试什么。     
我建议实施你的cookie值+盐实现不是为了解决你的问题,但出于安全考虑。正如这篇博文所解释的那样,由于cookie安全性差,wordpress有一个类似的问题,尽管它更严重。在您的情况下,即使Cookie已过期,确定的垃圾邮件发送者也可以绕过您的验证码。 为了解决提出的问题,我想到的唯一解决方案是实现强制CAPTCHA算法,如果觉得用户是垃圾邮件,它会覆盖新安全的cookie。在我的头脑中,我将使用自上一篇文章以来的时间,今天的帖子数量,在表单上撰写邮件所花费的时间长度等属性。 编辑:我还应该提一下,通过在用户提交的链接上实现rel =“nofollow”属性,您可以首先使您的论坛对垃圾邮件发送者不那么有吸引力。见维基百科。     
如下所述,cookie可以很容易地从浏览器中获取并粘贴在机器人代码中,因此解决方案不够健壮。 其他方案: 找一些在论坛上发帖的用户,询问他们是否自愿成为主持人。像AutoHotkey这样的论坛使用这个系统,这很好用。垃圾邮件发送者倾向于避免主动论坛,其中审核是快速和有效的。他们更喜欢死论坛...... 限制每个IP地址的匿名帖子数量。可能会让用户烦恼,但可以避免垃圾邮件泛滥。只有在遇到这种洪水时才应设置。     
更糟糕的是,因为你使用的是cookie,所以垃圾邮件发送者甚至不需要执行一次CAPTCHA。 Cookie可以由客户端更改,它们由浏览器发送页面请求,因此客户端可以发送它想要的任何内容。事实上,垃圾邮件请求来自脚本,因此制作cookie更加容易。 存储可变服务器端窗台解决了我提到的问题;您将随机哈希设置为cookie,并具有一个表,用于在服务器上存储CAPTCHA状态。为了让垃圾邮件发送者得不到CAPTCHA,他们必须猜测一个存储服务器端存储正确变量的哈希,这很难做到。 你提到的问题;事实上,每月一次可能不足以阻止垃圾邮件发送者,你无法解决这个问题。您必须向每个真实用户显示一个CAPTCHA,因为您希望垃圾邮件发送者也经常输入一个CAPTCHA。请记住,CAPTCHA是必要的,因为您无法告知普通用户的垃圾邮件发送者。 你经常应该有CAPTCHA节目,它会说服人们注册。     
加密时间(以皮秒或纳秒为单位)将其设置为输入值()&使用列名'hash'在DataBase中设置它 在每个页面中设置它&看它是否与数据库匹配。     

要回复问题请先登录注册