我做了一個登錄/註銷類,用戶登錄,根據用戶的選擇設置cookie。用戶輸入他們的電子郵件/密碼,並檢查數據庫,電子郵件/密碼組合存在一個會話創建,並設置cookie(與用戶ID),用戶被重定向...然後我有一個功能,記錄用戶通過獲取保存在該cookie中的用戶標識,檢查該用戶標識是否存在,然後再將用戶數據保存在會話中......我想知道是否有人看到任何潛在的錯誤/不安全的事情。什麼類型的信息應該保存在一個Cookie(PHP)
簡短的例子,我確定你們可以得到它的要點...
function login($email, $password, $remember){
// Check the database for email/password combo
if(/*user exists*/){ // if the user exists
$_SESSION = /*User data*/ // save the users data in a session
if($remember){
setcookie('user_id', /*User id*/); // save the user id in a cookie
}
header("location: index.php");// redirect
}
}
function Check_Cookie(){
if(isset($_COOKIE['user_id'])){
return $this->Log_In_ID($_COOKIE['user_id']);
}else{
return false
}
}
function Log_In_ID($id){
//Check the database if the user id exists
if(/*user exists*/){ // if the user exists
$_SESSION = /*User data*/ // save the users data in a session
header("location: index.php");// redirect
}else{
return false;
}
}
它不是什麼即時試圖問一個具體的例子,但是我相信你能得到它的要點。 ..有沒有人看到任何可能與此有關的錯誤。如果你們有任何建議,我喜歡聽到他們......還有,你們是否使用oop登錄用戶或以任何其他方式登錄用戶。
除此之外,您還可以檢查用戶的IP地址是否在相同的範圍和瀏覽器字符串中以確保它是同一臺計算機。 – 2009-09-12 21:05:41
@Milan很好的建議 - 也是很好的檢查,儘管IMO稍微超出了這個特定問題的範圍。 – 2009-09-12 21:08:49
好的解決方案,雷克斯。 另一種選擇是僅依靠cookie的會話id - 假設你有對會話設置的控制和理解。沒有很長的理由不能設置很長的會話壽命。 您的解決方案仍然優越,因爲您正在切換令牌 - 儘管您可以爲每個請求設置最後訪問Cookie,並且如果用戶的「session」已經「足夠長」,請重新生成用戶的sessionid。 – timdev 2009-09-13 06:03:34