Javascript 如果验证码不安全,可以使用什么替代?
据我所知,验证码并不是100%安全的。什么可以代替验证码?作为一名程序员,你认为呢?如何解决这个问题 编辑:感谢您的所有回答。Javascript 如果验证码不安全,可以使用什么替代?,javascript,security,Javascript,Security,据我所知,验证码并不是100%安全的。什么可以代替验证码?作为一名程序员,你认为呢?如何解决这个问题 编辑:感谢您的所有回答。 涉及人体反射的验证码(如计算、真正简单的问题等) 随机生成的隐藏输入要求为空,在服务器端生成一个随机标识符,将其保留在会话中一段时间。如果输入已填充且不为空,则它可能已由机器人填充,您的用户是否会填充隐藏的输入 我认为这真的取决于您试图控制验证码的使用。验证码用于确定是实际的人在执行请求,而不是机器。验证码和类似验证码的系统将升级,破解它们的技术也将升级 那么,你如
- 涉及人体反射的验证码(如计算、真正简单的问题等)
- 随机生成的隐藏输入要求为空,在服务器端生成一个随机标识符,将其保留在会话中一段时间。如果输入已填充且不为空,则它可能已由机器人填充,您的用户是否会填充隐藏的输入
我认为这真的取决于您试图控制验证码的使用。验证码用于确定是实际的人在执行请求,而不是机器。验证码和类似验证码的系统将升级,破解它们的技术也将升级 那么,你如何证明你是在和一个人说话,而不是一台电脑?例如,您可以要求用户参与聊天会话并进行小型对话。现在没有通过图灵测试的人工智能
所以答案是,没有一个系统是完美的。不要试图解决这个问题,但要设法减少它的影响。这是一个未解决的问题,随着时间的推移,它将变得越来越未解决。OCR工具做得越好,人与计算机之间的差距就越小,就越难区分它们。最终,计算机将无法与人类区分开来,游戏也将结束 如果您的服务器想要确保一个人在TCP管道的另一端,那么没有一个图灵测试不会最终失败(而且可能永远不会失败)。验证码是注定的,只是多久的问题
当然,就人类身份验证而言,这并不意味着一切都结束了。这仅仅意味着自动化图灵测试尽管方便,但在很长时间内都不会是实现这一目标的有效方法。对Boris建议的进一步解释: 随机生成的隐藏输入,要求为空 其思想是,表单包含多个不可见的输入,它们的类型可能不应设置为隐藏,但它们应该对人不可见(例如,将宽度或高度设置为0)。这些字段的初始内容应为空。如果人类填写表单,字段将为空,因为人类无法看到字段以便在其中输入任何内容,但如果机器人填写表单,字段(可能)不会为空,因为机器人通常只是盲目地在每个字段中输入某些内容
因此,您可以根据此字段的内容是否为空来区分机器人和人类。从长远来看,政府可以将openid服务器作为公民的数字护照运行。
这将是一种识别人类和防止玩偶的干净方法。在我的网站上,我选择了简单的问题。我过去用过的一些问题:
- 二对一的幂是多少李>
- 什么是2+2?(不过这是黑客入侵的,所以不要使用它)
- 这个网站域名是什么李>
- 二加二的和是多少
- 在此框中键入“stuff”作为垃圾邮件检查
- 1337看起来像什么?(仅使用字母)
- 今年是
此线程上的大多数“解决方案”都是“”,您应该警惕这些针对非常复杂问题的快速修复 我能想到的最好的方法是使用一些非常规的东西,比如一个特殊的隐藏字段,它应该是空的(或另一个特定的值),机器人会弄乱它 如果某个机器人制造商为您的站点调整了他的机器人,您必须快速将验证码更改为其他内容。在另一个机器人制造商为你的网站调整他的机器人之前(希望)需要一段时间 基本上,这是一种默默无闻的安全,必须不断改变才能保持默默无闻
如果有人专门针对你的网站,这将不会很好地工作。这只是一个想法,我在我的应用程序中使用了它,效果很好 您可以使用javascript或jquery在鼠标移动时创建cookie,并在服务器端检查cookie是否存在,因为只有人类有鼠标,cookie只能由他们创建
cookie可以是时间戳或令牌,可以验证获取鼠标坐标,确定坐标是否已更改,您可以确定它是否是机器人
然后对坐标数据进行加密。@Boris Guéry谢谢,随机生成的隐藏输入要求为空是什么意思?脚本往往会在每个输入字段中填充一些数据,尽管当这种预防技术开始获得重视时,这些自动脚本将忽略隐藏的输入字段,填充表单的其余部分时。然后,生成两个隐藏的输入,一个需要填充,但其他的不需要。如何填充额外的隐藏输入字段?让人类手工制作他们的HTTP帖子?@calmh。。第二个输入字段可以通过必须填写的JavaScript链接到任何可见的输入字段。+1我打赌下一个障碍是面部或视网膜扫描。大多数计算机已经有了网络摄像头来实现这一点。软件方面可能会有点问题