这是在PHP中存储密码的不良做法吗?

时间:2015-06-20 01:42:17

标签: php hash passwords md5 salt

我正在使用PHP中的crypt函数来哈希密码,显然还有盐。但是我通过在date函数上调用md5函数来生成我的salt。每次用户登录时,盐都会重新生成。

这有什么不好吗?我仍然相对较新的PHP(和webdev),我试图在部署此代码之前获得我的安全性。

$salt = md5(date('m/d/Y h:i:s a'));

1 个答案:

答案 0 :(得分:1)

许多人认为这是不好的做法。以下是(部分)原因:

  1. 您正在使用md5,弱,旧,快速计算哈希值。
  2. 盐以可预测的方式产生。每个用户的盐应该是不同的(即使在同一秒内注册),并且应该比日期更随机。
  3. 你正在重新发明轮子。您正在使用crypt函数来散列密码,因此没有理由不使用它来获取安全盐。 password_hash()是PHP 5.5的内置函数,而compatibility library版本的版本略高于此版本。
  4. How to use password_hash()

    TL; DR:使用password_hash()生成盐并哈希密码,无需以不太安全的方式重新发明轮子。

    首先向Hobo Sapiens提及password_hash()的信用。