php - 身份验证 MySQL 与 PHP?

标签 php mysql authentication

这更像是一个问题,以阻止你们认为哪种选择更好。

哪种身份验证过程更好?

选项 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/

相关文章:

javascript - 如何从jquery标记选中的所有复选框

Mysql:将 NOT NULL 列更新为 null 时未收到错误

c# - 有效地检查角色声明

web-services - Web 服务身份验证 - 最佳实践?

php - 调试不启动

javascript - Moodle,如何添加自定义 jQuery 脚本以在所有页面上执行

php - 将 PHP 通知和警告从 STDOUT 重定向到 STDERR

php - 当表 2 id = x 时,Laravel 5 Eloquent 选择表 1 中与表 2 中没有关系的项目

php - '@dfaf.fa' 附近的 MySql 和 PHP 语法错误 '

database - IV 对静态数据的认证加密(GCM 模式)的关注