在2019年使用PHP保护密码的最佳方法

时间:2019-02-11 10:21:41

标签: php encryption passwords password-encryption

我只是想知道2019年用PHP加密密码的最佳方法是什么。 我正在使用这种方法,但是很多人告诉我这是一种不安全的方法:

$password_Protect = md5($_POST["password"]);

我做了一些研究,但直到2017年才发现。那么,最好的方法是什么?

谢谢

2 个答案:

答案 0 :(得分:5)

使用password_hash()

还要检查password_verify()

PHP passwordhash()

还要检查

password_verify()

示例:

$password = "ABCDabcd";

echo password_hash($password, PASSWORD_BCRYPT, array('cost'=>12));

该示例应输出如下内容:

$ 2y $ 12 $ N6FSH8yRo0YMQ4oPJHN1vOkv7GfK3OhVp22H / AjGoVLY.5Dm7ECYS

要验证: 假设用户输入了密码,然后将其存储在输入变量中;

$input = 'ABCDabcd';

$hashed_password = '$2y$12$N6FSH8yRo0YMQ4oPJHN1vOkv7GfK3OhVp22H/AjGoVLY.5Dm7ECYS';

if(password_verify($input,$hashed_password)){

echo 'password is valid';

}else{

echo 'Password is invalid';

}

此应返回的密码有效。

答案 1 :(得分:-1)

由于MD5已经很弱,因此您必须使用诸如SHA3之类的其他哈希函数,另一种最佳做法是将salt与密码结合使用以避免字典攻击。 阅读这些页面以获取更多信息: https://en.wikipedia.org/wiki/Secure_Hash_Algorithms http://php.net/manual/en/faq.passwords.php

欢呼