如何哈希进入数据库的密码?

时间:2019-04-23 18:32:39

标签: php mysql hash insert passwords

$useremail = mysqli_real_escape_string($link, $_REQUEST['useremail']);
$password = mysqli_real_escape_string($link, $_REQUEST['password']);
$confirm_password = mysqli_real_escape_string($link, $_REQUEST['confirm_password']);
$f_name = mysqli_real_escape_string($link, $_REQUEST['f_name']);
$l_name = mysqli_real_escape_string($link, $_REQUEST['l_name']);
$grade_level = mysqli_real_escape_string($link, $_REQUEST['grade_level']);

// Attempt insert query execution
$sql = "INSERT INTO Users (useremail, password, f_name, l_name, grade_level) VALUES ('$useremail', '$password', '$f_name', '$l_name', '$grade_level')";

if ($_POST["password"] === $_POST["confirm_password"])......

我试图更改代码以包含HASH_PASSWORD,但我不认为我做得对。

2 个答案:

答案 0 :(得分:2)

首先:除准备好的语句外,请尝试使用PDO。它是更新和更安全的。 要对字符串进行哈希处理,可以使用以下代码:

$hashpassword = password_hash($yourpassword, PASSWORD_DEAULT);

要检查输入是否与哈希相同,可以使用:

password_verify($yourinput, $dbpassword);

这将返回一个布尔值:所以truefalse

答案 1 :(得分:1)

请使用PHP的内置函数password_hash()和password_verify()处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用password_hash()兼容性包。在散列之前,请确保您不要转义密码或对密码使用任何其他清除机制。这样做会更改密码,并导致不必要的附加编码。

(取自Password Hashing PHP 7

我也可能建议使用PDO“准备语句”

编辑:进一步阅读后,我同意《红鲱鱼》 ...我撤回了我的建议