我使用$ _SESSION ['name']來處理頁面間的數據。我主要用它來保持用戶在頁面之間登錄。在每一頁中,我檢查$ _SESSION [logged_in']是否爲真。如果爲true,請保持用戶登錄。否則,請執行其他操作。這是會話變量的安全使用嗎?
這是我如何處理我的課程 - 基本樣本:
<?php
session_start();
if($_SESSION['logged_in'])
{
//show control panel list
}
else
{
//show login box. Once user logs in. Once user logs in,
//fetch userID, username, etc from database. Also set
//$_SESSION['logged_in'] = true.
}
?>
某處代碼之間我做了以下內容:
SELECT * FROM User WHERE userID = $_SESSION['userID'];
我不知道,如果$ _SESSION [ '用戶ID' ]可以由用戶訪問或不訪問。如果它是可訪問的,那麼該頁面將受到威脅,因爲用戶可以手動更改用戶ID並訪問他/她所希望的其他帳戶。
我沒有太多的安全。請指教!我能做什麼?
注:我試圖使代碼儘可能簡單。目前,沒有涉及到OOP。
用戶可以操縱他們的cookies,而不是他們的會話數據,無論如何這就是簡短的答案......我認爲你做得很好。 Maby會評估是否應將未登錄的用戶踢出到單獨的登錄頁面並退出,以避免該腳本繼續運行。 – Teson
長答案:只給你的用戶一個session_id,它通過一個cookie傳遞或者獲得變量。這個標識符允許PHP查找該用戶的會話,該會話存儲在您的服務器上(默認情況下,在一個文件中)。 PHP讀取會話數據並使用數據填充$ _SESSION超級全局。用戶不能直接訪問會話數據,因此將敏感數據存儲在這裏很好。 –
[PHP會話變量安全性如何?](http://stackoverflow.com/questions/1181105/how-safe-are-php-session-variables) –