这更像是一个问题,以阻止你们认为哪种选择更好。
哪种身份验证过程更好?
选项 1
$sql = "SELECT * FROM users WHERE username = $user AND password = $password";
if($result){// success }
选项 2
$sql = 'SELECT * FROM USER WHERE username = $user';
///query goes here and returns to $result
if(count($result)==1 && $_POST['passwod'] == $result['password']){
/// success
}
我一直使用第二个选项,但想知道别人的意见。
该代码可能有点困惑并且容易受到黑客攻击,但它仅用于演示目的。
最佳答案
选项 1 和 2 都暗示将密码存储为纯文本,这很危险。如果您的数据库被盗(发生在 Gawker Media,发生在 Reddit,发生在我的公司),黑客不仅可以访问您网站上的帐户,还可以访问许多用户的电子邮件帐户,因为人们通常使用他们所有帐户的单一密码。
选项 3。 使用加密哈希函数(提示:不是 MD5)和 随机 盐对您的密码进行哈希处理。参见 this question对于在 WordPress 和 Drupal 中使用的 PHP 解决方案。 由于您必须首先从数据库中检索盐才能验证加盐密码,因此此解决方案更接近您的第二个选择。
关于php - 身份验证 MySQL 与 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263673/