我討厭做另一個cookie問題。我現在讀了很多,它讓我感到困惑。COOKIE/PHP:安全登錄REAL
我在YouTube和其他網站上看到很多自稱專業人士的操作指南和教程。但我無法弄清楚這一點。所以我必須要求其他人的意見。 Okey,cookies很難保證安全。但是你可以做幾件事,對吧?
在許多教程中,PHP程序員選擇在cookie中存儲用戶名和密碼。我能理解的是一件很愚蠢的事情呢?特別是如果您將此用作網站上的身份驗證。只需詢問cookie是否存在而不檢查數據庫。但是這還不夠好。如果有人用另一個用戶名編輯cookie。 BAM,完全訪問該帳戶。
所以,我一直在想。創建並存儲一個令牌作爲Cookie是一種好方法嗎?當用戶使用此Cookie標記訪問網站時。該網站詢問數據庫:「你們哪一個失敗者擁有這個?」。如果這是一場比賽而且你進場了。當然這個令牌是不可預測的!我的意思是對於人類的思想。對於暴力攻擊來說很難。
看看此令牌:
$salt = 'S0M3TH1N6';
$identifier = md5($salt . md5($username . $salt));
$token = md5(uniqid(rand(), TRUE));
$timeout = time() + 60 * 60 * 24 * 7;
setcookie('auth', "$identifier:$token", $timeout);
這個Cookie訪問,網站調用數據庫,看用戶是否有此作爲標記。如果沒有命中,你會回到登錄頁面。如果遇到問題,您可以在會話中取回並存儲所需的其他所有內容。據我所知,會話更可信,因爲它們在服務器端。因此,不要在cookie中存儲用戶名和密碼。因爲cookie在客戶端。當然,使用mysql_real_escape_string();在您獲取或添加到數據庫的所有內容上。
你們有什麼想法呢?也許我錯過了什麼,或者很多。隨意發表評論。 :)
在此先感謝。
這可能有助於http://stackoverflow.com/a/244907/1497042 – aarryy
HTTP:/ /jaspan.com/improved_persistent_login_cookie_best_practice < - 您只需要知道 – PeeHaa
爲什麼不使用會話如果您要做的只是創建一個包含會話ID的cookie? – Think