我是PHP的新手。我使用sha-1在我的数据库中存储密码,我只检查存储的sha-1和用户插入的密码计算的sha-1。现在我尝试使用password_hash()和password_verify()。
我对我的代码有疑问:
$user = htmlspecialchars($_POST["username"]);
$passw = password_hash($_POST["password"], PASSWORD_DEFAULT);
if ($stmt = $conn->prepare("
SELECT Password
FROM Users
WHERE Username = ?
LIMIT 1
")) {
$stmt->bind_param("s", $user);
$stmt->execute();
$stmt->bind_result($passwDB);
$stmt->fetch();
if( password_verify($passwDB,$passw) ){
if(!isset($_SESSION['login'])){
session_start();
}
$_SESSION['login'] = $user;
}
$stmt->close();
}
$conn->close();
这段代码对吗?目前我的数据库(sql)中的密码没有被散列。是否有最佳实践可以遵循?
Ps:在这种情况下,htmlspecialchars()是否有用?
谢谢(对不起我的英文!)