据我从here读到,验证码不是100%安全的事实。可以用什么来代替验证码?作为一名程序员,您怎么看?如何解决这个问题?
编辑:感谢所有答案。
答案 0 :(得分:7)
这是一个未解决的问题,随着时间的推移会变得更加未解决。 OCR工具越好,人与计算机之间的差距越小,将它们分开就越难。最终,计算机将与人类无法区分,然后游戏将会启动。
如果你的服务器想要确保一个人在TCP管道的另一端,那么就不存在最终不会被击败的图灵测试(并且可能永远不会有一个)。 CAPTCHA注定要失败,这只是一个问题。
当然,就人类身份验证而言,这并不意味着它已经全部结束。这只是意味着自动化图灵测试虽然方便,但却不是长期实现这一目标的有效方法。
答案 1 :(得分:6)
我认为这实际上取决于你试图控制验证码的使用。
答案 2 :(得分:5)
鲍里斯提出的建议的进一步解释:
随机生成的隐藏输入,需要为空
这个想法是你的表单包含几个不可见的输入,它们的类型可能不应该设置为隐藏,但它们应该对人类不可见(例如,设置宽度或高度为0)。这些字段的初始内容应为空。如果一个人填写表格,该字段将为空,因为人类无法看到该字段以便输入任何内容,但如果机器人填写表单,该字段将(可能)不为空,因为通常机器人只是盲目地在每个领域都输入一些东西。
因此,您可以根据此字段的内容是否为空来区分机器人和人类。
答案 3 :(得分:1)
虽然验证码可以被破坏,但 Capthca只会增加安全性 reCapthca 非常良好,并且训练有素的OCR如Tesseract打破它的成功非常有限。但是,有些服装使用Human Computation来打破便士。但这会使对您系统的攻击更加昂贵,这是您所希望的最好的。 密码学可以用暴力破解。所有密码哈希值都可以破解,但我们仍然使用它们,因为它使攻击者更难。
此主题中的大多数“解决方案”都是“Security Though Obscurity”,您应该对这些快速修复问题保持警惕。
答案 4 :(得分:0)
Captcha用于确定实际的人正在执行请求,而不是机器。 Captcha和类似验证码的系统将升级,破解它们的技术也将升级。
那你如何证明你是在与人而不是电脑交谈呢?例如,您可以要求用户参与聊天会话并进行小型会话。现在没有人工智能通过图灵测试。
所以答案是,没有一个系统是完美的。不要试图解决这个问题,但要设法减少这种影响。
答案 5 :(得分:0)
从长远来看,政府可以运行openid服务器作为公民的数字护照。 这将是一种识别人类和预防袜子的清洁方式。
答案 6 :(得分:0)
在我的网站上,我选择了简单的问题。我过去使用的一些问题:
其他一些好的可能是
答案 7 :(得分:0)
我能想到的最好的方法是使用一些非常规的东西,比如一个特殊的隐藏字段,它应该是机器人会弄乱的空(或其他特定值)。
如果某个机器人制造商为您的网站调整机器人,您必须快速将验证码更改为不同的东西。它会(希望)在另一个机器人制造商为你的网站调整机器人之前花一点时间。
基本上,这是一种通过默默无闻的安全保护,必须经常改变才能保持模糊。
如果有人专门针对您的网站,则效果不佳。
答案 8 :(得分:0)
它只是一个想法,id在我的应用程序中使用并且运行良好
你可以用javascript或jquery在鼠标移动时创建一个cookie,在服务器端检查cookie是否存在,因为只有人类有鼠标,cookie只能由他们创建 cookie可以是时间戳或可以验证的令牌
答案 9 :(得分:0)
获取鼠标的坐标,确定坐标是否已更改,您可以确定它是否是机器人。
然后加密坐标数据。