美好的一天。我正在写一个社交网络,我需要制作一个非常受保护的身份验证表单。我决定通过ajax发布数据并将登录信息保存到cookie中。但是登录可以很容易地用黑客的cookie写。然后我想起了用户哈希,每当用户登录并在DB中写入然后进行比较时,就可以从PHP生成用户哈希。但必须同时允许在不同设备中登录。如何制作安全的身份验证?
答案 0 :(得分:0)
如果您想要安全登录,则必须考虑 https 。
我会使用PHP超级全局$_SESSION
来存储您的会话状态,用户电子邮件等。
示例在PHP中使用PDO:
function login($email, $password)
{
$stmt = $pdo->prepare("SELECT password FROM users WHERE email = ? LIMIT 1");
$stmt->execute(array($email));
$pw = $stmt->fetchColumn();
if(password_verify($password, $pw)) { //password is correct
$_SESSION['logged_in'] = true;
$_SESSION['email'] = $email;
return true;
} else return false;
}
您应该定义使用预准备语句,因为您接受可能有危险的用户输入。不要忘记 password_hash
和 password_verify
功能,以便安全地加密密码。将加密的密码存储在数据库中,并检查加密的用户输入是否与加密的密码相匹配。不要使用md5
,这不安全。
点击此链接,详细了解 $_SESSION
的
$_SESSION
s password_hash
和password_verify
代替md5
希望这有点帮助。