javascript中用于用户身份验证的哈希密码
我一直在这里阅读与此相关的问题和答案,但没有人提出这一点,它有缺陷吗javascript中用于用户身份验证的哈希密码,javascript,security,hash,passwords,Javascript,Security,Hash,Passwords,我一直在这里阅读与此相关的问题和答案,但没有人提出这一点,它有缺陷吗 用户的密码被我散列存储在我的服务器中 他访问登录名,我提供一个明文随机字符串 登录页面中的javascript散列他的密码,附加明文,重新散列整个字符串并将其发送到服务器 服务器从数据库中获取哈希密码,并附加明文、重新哈希和比较 我认为这种方法可以防止密码泄露和重放攻击,只要随机字符串是不可预测的,并且不能在合理的时间内重复使用 该算法是否存在任何缺陷?我看到的最大问题是,您正在解决一个已经解决的问题(通过SSL),如果您的方
该算法是否存在任何缺陷?我看到的最大问题是,您正在解决一个已经解决的问题(通过SSL),如果您的方案中不使用SSL,您仍然会面临中间人和会话劫持漏洞。如果您已经在使用SSL,那么这完全是不必要的复杂性,而且正如我们所知,复杂性对安全性是有害的
因此,算法中的缺陷在于没有保护通信通道。如果没有这一点,您的算法就不是特别安全的,有了这一点,您的算法就没有特别必要了 我同意前面关于使用SSL的回答,但我将在这里专门介绍算法 要破坏您的算法,攻击者需要执行以下操作之一:
(3)是一种有趣的攻击向量。在没有SSL的情况下,攻击者可以嗅探(3)中的两个元素—他将听到来自服务器的随机明文,然后将双哈希密码发送到服务器。然后他可以使用密码猜测工具来确定原始密码。从常见密码列表开始,对它们进行哈希运算,添加明文,然后再次进行哈希运算。破解所需的时间将取决于密码的强度和哈希算法的大小。他还可以尝试使用彩虹表查找“哈希密码”+“随机明文”字符串
通过找到一种防止攻击者嗅探交换的方法,您的安全性将得到提高 你说得很对,我想是关于偷饼干之类的。。但我感兴趣的是,从只将SSL用于登录表单的常见做法中删除SSL,然后为其余内容保留清晰的HTTP。SSL可能很昂贵,大多数提供商不会以免费的方式提供给您。