安全密码存储PHP

时间:2017-07-20 18:05:57

标签: php sql security hash

我在这里写的方法是否足够安全,可以在我的数据库中存储密码?我不确定我是否正确实施了辣椒,显然盐会存储在数据库中。

$userPassword = "password";

$pepper = "81521500905970edf70e3017.50852645";
$pepperedPassword = hash_hmac('sha512', $password, $pepper);
$salt = uniqid(random_int(1000000000,9999999999), true);

$options = [
    'cost' => 12,
    'salt' => $salt,
];

$hash = password_hash($pepperedPassword, PASSWORD_DEFAULT, $options);

if (password_verify($userPassword, $hash)) {
      // Login successful.
      echo "Salt:" . $salt . "<BR>";
      echo "Pepper: " . $pepper . "<BR>";
      echo "Peppered password: " . $pepperedpassword . "<BR>";
      echo "Password Hash: " . $hash;

}

1 个答案:

答案 0 :(得分:1)

不,您没有按照文档的建议使用password_hash。请参阅http://php.net/password_hash上的大红框 - 设置手动盐的功能将在未来版本中消失,因为您不应该这样做。

  

警告自PHP 7.0.0起,不推荐使用salt选项。现在最好只使用默认生成的盐。