Security 实用的非基于图像的验证码方法?
看起来我们将添加对堆栈溢出的支持。这对于防止机器人程序、垃圾邮件发送者和其他恶意脚本活动是必要的。我们只希望人类在这里发布或编辑东西 我们将使用JavaScript(jQuery)验证码作为第一道防线: 这种方法的优点是,对于大多数人来说,验证码永远都不可见强> 然而,对于禁用JavaScript的人来说,我们仍然需要一个后备方案,这就是它变得棘手的地方 我写了一篇文章,我们可以重复使用 但是,我更喜欢使用文本,以避免在服务器上为每个请求创建所有这些图像的开销 我见过像Security 实用的非基于图像的验证码方法?,security,language-agnostic,captcha,Security,Language Agnostic,Captcha,看起来我们将添加对堆栈溢出的支持。这对于防止机器人程序、垃圾邮件发送者和其他恶意脚本活动是必要的。我们只希望人类在这里发布或编辑东西 我们将使用JavaScript(jQuery)验证码作为第一道防线: 这种方法的优点是,对于大多数人来说,验证码永远都不可见 然而,对于禁用JavaScript的人来说,我们仍然需要一个后备方案,这就是它变得棘手的地方 我写了一篇文章,我们可以重复使用 但是,我更喜欢使用文本,以避免在服务器上为每个请求创建所有这些图像的开销 我见过像 ASCII文本验证码:
- ASCII文本验证码:
\/\/(\uq)\/\/
- 数学难题:7减去3乘以2等于多少
- 小问题:什么味道更好,蟾蜍还是冰棒
兼容验证码
想法?但要确保它不是什么东西。这也说明了一个问题——操作顺序 虽然我们都应该知道基础数学,但数学难题可能会引起一些混乱。在你的例子中,我相信有些人会用“8”而不是“1”来回答 用粗体或斜体突出显示随机字符的简单文本字符串是否合适?用户只需输入粗体/斜体字母作为验证码 例如ssdfatwerweajhcsadkoghvefdhrffghlfgdhowfgh 在这种情况下,“堆栈”将是验证码。 这一观点显然有许多不同之处 编辑:示例变体,以解决与此想法相关的一些潜在问题:
- 使用随机颜色的字母代替粗体/斜体
- 在验证码中使用每秒钟一个红色字母(减少机器人识别不同格式字母猜测验证码的可能性)
然后,我有一段JavaScript,它每秒更新一次值,更新页面加载的秒数:
var antiSpam=function(){
if(document.getElementById(“反垃圾邮件”)){
a=document.getElementById(“反垃圾邮件”);
如果(isNaN(a.值)=真){
a、 数值=0;
}否则{
a、 value=parseInt(a.value)+1;
}
}
setTimeout(“antiSpam()”,1000);
}
抗聚丙烯酰胺();
然后在提交表单时,如果反垃圾邮件值仍然是“lala”,那么我将其标记为垃圾邮件。如果反垃圾邮件值是一个整数,我检查它是否高于10(秒)。如果低于10,我会将其标记为垃圾邮件,如果是10或更多,我会让它通过
如果反垃圾邮件=整数
如果反垃圾邮件>=10
评论=批准
其他的
评论=垃圾邮件
其他的
评论=垃圾邮件
理论是:
- 垃圾邮件机器人不支持JavaScript,将提交它看到的内容
- 如果bot确实支持JavaScript,它将立即提交表单
- 评论者在发布之前至少阅读了部分页面
那太愚蠢了。因此,将有用户可以编辑网站上的任何帖子,但不能在没有验证码的情况下发布?如果你有足够的代表投票否决帖子,你就有足够的代表在没有验证码的情况下发布帖子。如果必须的话,把它调高一点。此外,还有很多垃圾邮件检测方法可以在没有图像识别的情况下使用,因此,即使对于未注册的用户,也永远不需要填写那些被上帝抛弃的验证码表单。除非我遗漏了什么,否则在所有工作都是在外部完成的情况下使用这些方法有什么不对 我只是想一想。也许你需要这样的东西来注册,以防那些不速之客进来。我只是用一些简单的问题
.oooooo. oooooooo
d8P' `Y8b dP"""""""
888 888 d88888b.
888 888 V `Y88b '
888 888 ]88
`88b d88' o. .88P
`Y8bood8P' `8bd88P'
2 * 5 + 1
2 + 4 - 2
2 - 2 * 3
import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby