使用其hashkey验证客户端上的验证码是否安全?

Arn*_*rno 4 javascript forms security validation captcha

我经常使用captha代码来保护表单.到目前为止,出于显而易见的原因,我仅在服务器端检查用户输入的验证码解决方案.对于所有其他表单字段,我在客户端上进行javascript验证,因为这样更快,更用户友好.(当然我在服务器端进行第二次检查).但是对于验证码领域我只是检查它是否已填写.

我的问题:使用验证码代码的哈希键(例如MD5)进行客户端JavaScript验证是否安全?使用hashkey执行此操作不会向机器人显示验证码本身,应该非常安全,对吧?但也许我对这个想法完全错了......谢谢你的见解!

小智 5

足够安全我会说,但这可能有助于OCR机器人检查他们是否正确无需在服务器上试试运气并冒失去当前验证码的风险(因为如果提供的错误答案并且赢得了',服务器会使代码无效'给你第二次机会再次尝试使用相同的验证码).

假设OCR机器人无法确定验证码的最后一个字母是小写L还是"1"数字?在没有客户端验证的传统验证码中,机器人只是试试运气,如果它猜错了服务器记录故障并将其重新发送一个完全不同的验证码,那么OCR必须重新开始.

现在想象一下上面的场景,但是通过客户端验证,这里的机器人有一种方法来验证他们是否有正确的答案而不通知服务器,所以在这种情况下,如果机器人不确定,它会尝试所有的可能性反对哈希,只提交正确的答案.基本上,这使得机器人能够在不告诉服务器的情况下犯错,而无需重新开始.

最后,我没有准确的数字,但即使每次使用不同的盐,取决于可能的数量(如4个字母数字字符,不区分大小写),可能会以合理的数量强制每一种可能性没有制作OCR的时间.为了缓解这种情况,您应该使用散列的多次迭代,以便在计算上难以尝试所有可能的答案.