Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 实用的非基于图像的验证码方法?_Security_Language Agnostic_Captcha - Fatal编程技术网

Security 实用的非基于图像的验证码方法?

Security 实用的非基于图像的验证码方法?,security,language-agnostic,captcha,Security,Language Agnostic,Captcha,看起来我们将添加对堆栈溢出的支持。这对于防止机器人程序、垃圾邮件发送者和其他恶意脚本活动是必要的。我们只希望人类在这里发布或编辑东西 我们将使用JavaScript(jQuery)验证码作为第一道防线: 这种方法的优点是,对于大多数人来说,验证码永远都不可见 然而,对于禁用JavaScript的人来说,我们仍然需要一个后备方案,这就是它变得棘手的地方 我写了一篇文章,我们可以重复使用 但是,我更喜欢使用文本,以避免在服务器上为每个请求创建所有这些图像的开销 我见过像 ASCII文本验证码:

看起来我们将添加对堆栈溢出的支持。这对于防止机器人程序、垃圾邮件发送者和其他恶意脚本活动是必要的。我们只希望人类在这里发布或编辑东西

我们将使用JavaScript(jQuery)验证码作为第一道防线:

这种方法的优点是,对于大多数人来说,验证码永远都不可见

然而,对于禁用JavaScript的人来说,我们仍然需要一个后备方案,这就是它变得棘手的地方

我写了一篇文章,我们可以重复使用

但是,我更喜欢使用文本,以避免在服务器上为每个请求创建所有这些图像的开销

我见过像

  • ASCII文本验证码:
    \/\/(\uq)\/\/
  • 数学难题:7减去3乘以2等于多少
  • 小问题:什么味道更好,蟾蜍还是冰棒
也许我只是想看看风车,但如果可能的话,我希望有一个资源密集度较低、不基于图像的
兼容验证码


想法?

但要确保它不是什么东西。这也说明了一个问题——操作顺序

虽然我们都应该知道基础数学,但数学难题可能会引起一些混乱。在你的例子中,我相信有些人会用“8”而不是“1”来回答

用粗体或斜体突出显示随机字符的简单文本字符串是否合适?用户只需输入粗体/斜体字母作为验证码

例如
s
sdfatwerweajhcsadkoghvefdhrffghlfgdhowfgh

在这种情况下,“堆栈”将是验证码。 这一观点显然有许多不同之处

编辑:示例变体,以解决与此想法相关的一些潜在问题:

  • 使用随机颜色的字母代替粗体/斜体
  • 在验证码中使用每秒钟一个红色字母(减少机器人识别不同格式字母猜测验证码的可能性)
这种方法的优点是,对大多数人来说,验证码永远都看不见

我喜欢这个主意,难道我们没有办法直接进入销售代表系统吗?我的意思是,任何一个拥有+100代表的人都可能是人类。所以,如果他们有代表,你甚至不需要费心做任何关于验证码的事情

然后,如果他们没有,那就发吧,我相信不需要那么多的帖子就可以达到100篇,社区会立即发现任何似乎在用攻击性标签进行垃圾邮件的人,为什么不添加一个“报告垃圾邮件”链接,将其下载200篇?获得其中3个,spambot成就解锁,再见;)

编辑:我还应该补充一点,我喜欢非图像验证码的数学概念。或者可能是一个简单的谜语类型的东西。可能会使发布更有趣^ ^ ^

关于一个?

的问题呢?这个问题似乎很好地解决了(尽管我可能没有你收到那么多的垃圾评论),就是有一个隐藏字段并用假值填充它,例如:


然后,我有一段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,它将立即提交表单
  • 评论者在发布之前至少阅读了部分页面
这种方法的缺点是它需要JavaScript,如果您没有启用JavaScript,您的评论将被标记为垃圾邮件,但是,我会查看标记为垃圾邮件的评论,所以这不是问题

对评论的回应

@MrAnalogy:服务器端方法听起来是个不错的主意,与使用JavaScript完全相同。好电话

@阿维德:我知道,正如我在前面提到的,这种方法容易受到直接攻击。然而,它将保护你的普通垃圾机器人,它盲目地将垃圾提交到它能找到的任何形式。

尽管这是开始的:

我们正在一个频繁挖掘数据的应用程序上尝试此解决方案:

你可以在我们的网站上看到它的作用

您可以查看源代码并看到验证码只是HTML

因此,验证码对所有用户都是强制性的 除了主持人


那太愚蠢了。因此,将有用户可以编辑网站上的任何帖子,但不能在没有验证码的情况下发布?如果你有足够的代表投票否决帖子,你就有足够的代表在没有验证码的情况下发布帖子。如果必须的话,把它调高一点。此外,还有很多垃圾邮件检测方法可以在没有图像识别的情况下使用,因此,即使对于未注册的用户,也永远不需要填写那些被上帝抛弃的验证码表单。

除非我遗漏了什么,否则在所有工作都是在外部完成的情况下使用这些方法有什么不对

我只是想一想。

也许你需要这样的东西来注册,以防那些不速之客进来。

我只是用一些简单的问题
  .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