$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,但我不认为我做得对。
答案 0 :(得分:2)
首先:除准备好的语句外,请尝试使用PDO
。它是更新和更安全的。
要对字符串进行哈希处理,可以使用以下代码:
$hashpassword = password_hash($yourpassword, PASSWORD_DEAULT);
要检查输入是否与哈希相同,可以使用:
password_verify($yourinput, $dbpassword);
这将返回一个布尔值:所以true
或false
答案 1 :(得分:1)
请使用PHP的内置函数password_hash()和password_verify()处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用password_hash()兼容性包。在散列之前,请确保您不要转义密码或对密码使用任何其他清除机制。这样做会更改密码,并导致不必要的附加编码。
我也可能建议使用PDO“准备语句”
编辑:进一步阅读后,我同意《红鲱鱼》 ...我撤回了我的建议