创建安全用户身份验证功能的最佳方法是什么?下面是 PHP 函数的核心,它接收用户名和密码并根据数据库进行检查。
我对查询及其返回值特别感兴趣。使用“else if($query1)”是验证和设置 session 变量的最佳方法吗?另外,最好为 session 变量设置什么值?电子邮件地址、用户名、 bool 变量、主键索引等?
$query1 = mysql_fetch_array(mysql_query("SELECT primaryKey
FROM loginInfo
WHERE email = md5('$email')
AND password = md5(CONCAT('$password',salt))
LIMIT 1"));
if (!$query1)
return false;
else if ($query1) {
$_SESSION['userNumber'] = $query1[primaryKey];
return true;
}
else
return false;
最佳答案
MD5 存在已知漏洞,不再被认为是安全的。您应该切换到更强的哈希值,例如 SHA-2 .
此外,$query1
只能计算为 true 或 false,因此最后的 else
部分是无用的,并且永远不会到达。您的 3 个分支相当于:
if (!$query1)
return false;
else { // else $query1 is obviously true
$_SESSION['userNumber'] = $query1[primaryKey];
return true;
}
session 中不存在要存储的“最佳值”,但主键通常是一个方便的选择,因为它保证是唯一的,并且还提供了一种查找剩余详细信息的简单方法。此外,如果您发现自己经常显示某些信息(例如用户名),您还可以将其存储在 session 中以便于访问。
关于php - 最安全的php用户认证功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4231075/