2013-03-21 53 views
-1

來源是這裏http://jaspan.com/improved_persistent_login_cookie_best_practice如何「保護」存儲在cookie中的信息?

請諮詢改進(方法的改變)。在這裏我只想在cookie中存儲用戶名,以便用戶不需要輸入用戶名。商店在黑客無法知道被盜的cookie的用戶名(如果可能的話)

如果用戶檢查記住我,併成功登錄

1)創建依賴於用戶名的東西的方式。例如$ username_for_cookie = MD5($ username)。$ salt; +可能是別的。在mysql中記錄$ username_for_cookie

2)創建標識符。簡單的隨機值。在mysql中記錄該標識符

3)創建令牌。也簡單的隨機值,也記錄在MySQL中。

4)創建cookie將所有上述值放在一起$ username_for_cookie。 $標識。$令牌

Cookie的名字可能還隨機值或類似_ekglasjd

用戶回訪網站

1)檢查,如果cookie存在

2)如果cookie存在單獨的$ username_for_cookie東西。 $ identifier。$ token得到3個分隔值

3)在mysql中搜索$ username_for_cookie值是否存在。如果不存在,請登錄表單輸入用戶名和密碼。如果存在,比較$ identifier和$ token是否與mysql相同

這樣的方法是否「安全」?有什麼需要改進的?

+0

不要在客戶端上存儲安全數據,請將其保存在服務器上。所有cookie真正需要的是堅持會話ID。可能不想在這一個上重新發明輪子。 – ficuscr 2013-03-21 16:16:11

+0

@ficuscr對於這種情況,這不是一個好的聲明。 cookie將存儲的所有內容都是一次性令牌,以啓用持久登錄。 – datasage 2013-03-21 16:17:43

+0

@datasage,是的,再次閱讀你是正確的。我通常在做這樣的事情時使用兩個cookie,一個更長時間的「跟蹤」cookie以及正常的「登錄用戶」會話cookie。 – ficuscr 2013-03-21 16:30:06

回答

0

您可以通過執行以下操作來改善這一點。

  1. 只能使用https。
  2. 重置令牌使用後。
  3. 令牌必須在特定窗口內使用,然後纔會過期並且用戶需要重新登錄。
  4. 確保令牌足夠隨機,無法複製。不應該用用戶數據構建。