2014-11-03 52 views
0

在我的数据库中,我保存了密码与比较两个哈希有bcrypt(PHP)

password_hash($user->getPassword(), PASSWORD_BCRYPT); 

登录表单中,用户输入此密码,我编码的密码到bcrypt串并提交加密的密码(因为我没有SSL)到服务器。

所以我的问题是可以比较使用bcrypt生成的两个散列?

+1

不可以,除非他们使用完全相同的盐和成本参数。 – Mike 2014-11-03 19:43:24

+0

好吧,这意味着如果我使用相同的盐和成本,这将是可能的?但是我认为在javascript中显示盐和成本非常糟糕... – user2831042 2014-11-03 19:46:44

+1

@ user2831042盐和成本不是敏感项目。您应该担心您正在为该网站提供服务,并且您的关键安全功能不可加密且易受攻击。 – ceejayoz 2014-11-03 19:47:31

回答

5

在登录表单中,用户输入此密码,然后将密码编码为bcrypt字符串,并将密码(因为我没有SSL)提交给服务器。

停止你在做什么,去购买SSL证书。有几个景点(https://www.startssl.com/就是其中一个),您可以免费获得一个景点,或者您可以向Namecheap等人支付7美元。

您已经实施了错觉的安全性。在客户端散列密码不会提供任何有意义的安全优势 - 任何MITM攻击者只需将JavaScript的调整副本提供给他们正在攻击的人(或者只是截取散列密码,这实质上就是用户的真实密码方案)。

+0

确定thx为您的答案我会购买SSL证书:-) – user2831042 2014-11-03 19:54:22