使用PHP的password_hash函数是否值得获得性能?

时间:2015-05-28 15:14:53

标签: php security passwords

我已经读过使用password_hash()是使用php生成密码的最佳方法之一。我已经运行了一些测试,这个功能在CPU上真的很难。与盐渍sha1()方法相比,它值得吗?

我不介意使用它,但每10秒左右可能会有一次登录,我担心它会降低服务器速度。

我设置了一个循环来生成1000 password_hash()个值,服务器在30秒后超时。相比之下,我生成了1000个盐渍sha1()密码,它是即时的。

性能是否值得?

1 个答案:

答案 0 :(得分:4)

保护数据库中的密码的目的是在数据库泄露后给你一些时间来注意你已经被攻陷,锁定帐户,并向用户发出通知他们需要更改密码在其他地方使用它们。

简单的散列,例如salted-SHA1,几乎不能满足这个目的。使用硬件加速暴力攻击,攻击者可以在你有很多机会对它做任何事情之前获取大量密码。

“值得”总是因每个应用程序及其威胁模型而异,并且肯定有其他处理密码/身份验证的方法是合理的,但像password_hash这样的方法被认为是Web应用程序的基准标准做法,今天你必须证明使用。

并且由于用户可以跨站点重新使用密码,因此在散列中减少散列意味着在数据库遭到破坏的情况下,不仅仅是您自己的站点的安全性存在风险。因此,即使您的服务中没有任何特别敏感的内容,您也有其他责任。