Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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
Javascript 如果验证码不安全,可以使用什么替代?_Javascript_Security - Fatal编程技术网

Javascript 如果验证码不安全,可以使用什么替代?

Javascript 如果验证码不安全,可以使用什么替代?,javascript,security,Javascript,Security,据我所知,验证码并不是100%安全的。什么可以代替验证码?作为一名程序员,你认为呢?如何解决这个问题 编辑:感谢您的所有回答。 涉及人体反射的验证码(如计算、真正简单的问题等) 随机生成的隐藏输入要求为空,在服务器端生成一个随机标识符,将其保留在会话中一段时间。如果输入已填充且不为空,则它可能已由机器人填充,您的用户是否会填充隐藏的输入 我认为这真的取决于您试图控制验证码的使用。验证码用于确定是实际的人在执行请求,而不是机器。验证码和类似验证码的系统将升级,破解它们的技术也将升级 那么,你如

据我所知,验证码并不是100%安全的。什么可以代替验证码?作为一名程序员,你认为呢?如何解决这个问题

编辑:感谢您的所有回答。
  • 涉及人体反射的验证码(如计算、真正简单的问题等)
  • 随机生成的隐藏输入要求为空,在服务器端生成一个随机标识符,将其保留在会话中一段时间。如果输入已填充且不为空,则它可能已由机器人填充,您的用户是否会填充隐藏的输入

我认为这真的取决于您试图控制验证码的使用。验证码用于确定是实际的人在执行请求,而不是机器。验证码和类似验证码的系统将升级,破解它们的技术也将升级

那么,你如何证明你是在和一个人说话,而不是一台电脑?例如,您可以要求用户参与聊天会话并进行小型对话。现在没有通过图灵测试的人工智能


所以答案是,没有一个系统是完美的。不要试图解决这个问题,但要设法减少它的影响。

这是一个未解决的问题,随着时间的推移,它将变得越来越未解决。OCR工具做得越好,人与计算机之间的差距就越小,就越难区分它们。最终,计算机将无法与人类区分开来,游戏也将结束

如果您的服务器想要确保一个人在TCP管道的另一端,那么没有一个图灵测试不会最终失败(而且可能永远不会失败)。验证码是注定的,只是多久的问题


当然,就人类身份验证而言,这并不意味着一切都结束了。这仅仅意味着自动化图灵测试尽管方便,但在很长时间内都不会是实现这一目标的有效方法。

对Boris建议的进一步解释:

随机生成的隐藏输入,要求为空

其思想是,表单包含多个不可见的输入,它们的类型可能不应设置为隐藏,但它们应该对人不可见(例如,将宽度或高度设置为0)。这些字段的初始内容应为空。如果人类填写表单,字段将为空,因为人类无法看到字段以便在其中输入任何内容,但如果机器人填写表单,字段(可能)不会为空,因为机器人通常只是盲目地在每个字段中输入某些内容


因此,您可以根据此字段的内容是否为空来区分机器人和人类。

从长远来看,政府可以将openid服务器作为公民的数字护照运行。
这将是一种识别人类和防止玩偶的干净方法。

在我的网站上,我选择了简单的问题。我过去用过的一些问题:

  • 二对一的幂是多少
  • 什么是2+2?(不过这是黑客入侵的,所以不要使用它)
  • 这个网站域名是什么
  • 二加二的和是多少
还有一些不错的

  • 在此框中键入“stuff”作为垃圾邮件检查
  • 1337看起来像什么?(仅使用字母)
  • 今年是

虽然CAPTCHA可以被破解,但CAPTCHA唯一的安全增强功能是非常好的,像训练有素的OCR一样,破解它的成功将非常有限。然而,也有一些服装是用来把它们破成硬币的。但是,这使得针对您的系统的攻击成本更高,这是您所能期望的最好结果密码可以用暴力破解。所有密码哈希都是可以破解的,但我们仍然使用它们,因为这会让攻击者更难破解


此线程上的大多数“解决方案”都是“”,您应该警惕这些针对非常复杂问题的快速修复

我能想到的最好的方法是使用一些非常规的东西,比如一个特殊的隐藏字段,它应该是空的(或另一个特定的值),机器人会弄乱它

如果某个机器人制造商为您的站点调整了他的机器人,您必须快速将验证码更改为其他内容。在另一个机器人制造商为你的网站调整他的机器人之前(希望)需要一段时间

基本上,这是一种默默无闻的安全,必须不断改变才能保持默默无闻


如果有人专门针对你的网站,这将不会很好地工作。

这只是一个想法,我在我的应用程序中使用了它,效果很好

您可以使用javascript或jquery在鼠标移动时创建cookie,并在服务器端检查cookie是否存在,因为只有人类有鼠标,cookie只能由他们创建
cookie可以是时间戳或令牌,可以验证

获取鼠标坐标,确定坐标是否已更改,您可以确定它是否是机器人


然后对坐标数据进行加密。

@Boris Guéry谢谢,随机生成的隐藏输入要求为空是什么意思?脚本往往会在每个输入字段中填充一些数据,尽管当这种预防技术开始获得重视时,这些自动脚本将忽略隐藏的输入字段,填充表单的其余部分时。然后,生成两个隐藏的输入,一个需要填充,但其他的不需要。如何填充额外的隐藏输入字段?让人类手工制作他们的HTTP帖子?@calmh。。第二个输入字段可以通过必须填写的JavaScript链接到任何可见的输入字段。+1我打赌下一个障碍是面部或视网膜扫描。大多数计算机已经有了网络摄像头来实现这一点。软件方面可能会有点问题