我一直在尋找很長一段時間關於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