我一直在寻找很长一段时间关于PHP的安全登录。我发现了一些有趣的内容,但我仍然不完全肯定最安全和简单的方法。用PHP安全登录
我创建了一个简单的系统,但我不确定它足够安全。我将保留这个简短的内容,以免让你不知道详细信息:
我在数据库中的用户表包含名为“loginToken”的列。当用户登录时,将创建一个值(,基于该用户的ID,一个随机数,最后sha1被散列),该值插入到数据库用户表的loginToken中。
除此之外,$ _CCOKIE创建时具有相同的值。因此,这些值每次都是给每个用户完全不同的,交替用户登录
我们检查用户登录,我用这个下面的代码:
$user_id = -1; //By default, the user is logged out
if (isset($_SESSION["user"]) && isset($_COOKIE["ut"])) { //Check session and user token exists
//Get variables
$uid = $_SESSION["user"]; //Get user ID
$ut = $_COOKIE["ut"]; //Get user token
//Compare the user id with the user token in the database
$sql = mysql_query("
SELECT COUNT(*)
FROM `users`
WHERE `id` = '$uid' AND `login_token` = '$ut'
");
//Get result
$sql = mysql_result($sql, 0);
//Found!
if ($sql == 1) {
$user_id = $uid; //User logged in!
}
}
是这样理解的?如果是这样,那是一种足够安全的方法吗?
谢谢!
这根本不安全。你不是在消毒你的信息,你信任客户端的一切。请至少使用准备好的语句。 –
你需要看看mysqli和参数化查询http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php – j0hnstew
@RudiVisser:对不起,我对这个编码领域还比较陌生。什么是“准备好的陈述”? – Tom