回答
是的。您使用Cookie來實現「自動登錄」(或「記住我」)功能。
This google search or SO search results,should point you to a right direction。
是的,你應該使用cookie來做到這一點。這裏是手冊條目:http://php.net/manual/en/features.cookies.php
或者,你可以看看這個功能:http://php.net/manual/en/function.session-set-cookie-params.php。它允許你修改會話cookie設置,如它的壽命......
閱讀:http://www.php.net/manual/en/session.configuration.php
你需要的是session.cookie_lifetime
設置。會話cookie(例如沒有生命週期的cookies)在瀏覽器關閉時被刪除。如果希望會話保持更長時間,請將該設置設置爲php.ini
,httpd.conf
或.htaccess
。甚至可能有ini_set
編輯:其實你可以使用此功能:
session_set_cookie_params (86400*30);
session_start()
86400 * 30爲30天。
在這裏看到:http://www.php.net/manual/en/function.session-set-cookie-params.php
所以你要選擇「在此計算機上記住我」?這裏有一個語言無關的方式,你可以怎麼做:
- 至少
cookie_id
和user_id
列創建一個數據庫表。如有必要,還可添加cookie_ttl
和ip_lock
。列名自己說明了我的猜測。 - 第一次登錄時(如有必要,只有選中「記住我」選項),生成一個長的,唯一的,難以猜測的密鑰,它代表
cookie_id
,並將其與user_id
一起存儲在DB中。還將此存儲爲具有之前指定的cookie名稱的cookie的cookie值。例如。remember
。給餅乾長壽,例如一年。 - 對每個請求,檢查用戶是否已登錄。如果不是,請檢查與cookie名稱
remember
相關的cookie值cookie_id
。如果它存在且根據DB有效,則自動登錄與user_id
相關聯的用戶並再次推遲cookie年齡。
至於安全風險,如果密鑰很長且混合不夠(至少30個混合字符),那麼強制登錄的機會可以忽略不計。此外,您可能已經瞭解了要使用的可選列ip_lock
。它應該表示用戶的IP地址。你最終可以添加一個額外的複選框「鎖定登錄到這個IP(只有當你有一個靜態IP)」,這樣服務器可以使用用戶的IP地址作爲額外的驗證。
如果一個人沒有IP鎖的情況下劫持了用戶的cookie值會怎麼樣?那麼,對此沒什麼可做的。和它一起生活。 「記住我」的事情在每個論壇下都很有趣,帳號劫持不會在那裏造成太大的影響,但我絕對不會將它用於管理面板和那種控制服務器端內容的網頁。
這畢竟是相當直接的。祝你好運。
我認爲將用戶代理存儲在數據庫中是一個好主意,因爲相同的用戶將是非常不合邏輯的想要在IE和Firefox中被記住。事實上,所有可以從請求中挖掘的東西都應該被存儲起來,以防止cookie被竊取,不是嗎? – 2009-12-09 23:39:10
可行,但如果用戶升級了UA,則會失敗。 – BalusC 2009-12-10 01:52:41
對於用戶來說,再次輸入他的詳細信息比侵入者獲得訪問權更好。 – 2009-12-10 13:39:34
- 1. symfony 2 - 會員可以再次訪問登錄頁面嗎?
- 2. 「保持登錄狀態」登錄頁面
- 3. 防止其他登錄用戶訪問'編輯'頁面
- 4. 的PhoneGap打破jQuery Mobile的頁面加載時 - 訪問同一頁面再次
- 5. Asp.Net Forms成功登錄後再次登錄登錄頁面
- 6. 如何確保只有登錄用戶才能訪問頁面?
- 7. 當用戶第一次登錄時重定向到我的帳戶頁面
- 8. Cakephp登錄頁面訪問
- 9. 登錄頁面保持登錄時清除我的文本框。
- 10. 受登錄保護的頁面不需要登錄訪問
- 11. 如何在用戶登錄時停止訪問WordPress頁面
- 12. 登錄並保持在同一頁面上?
- 13. 第一次登錄後保存用戶名和密碼,不要再提問
- 14. 僅當有效登錄時才訪問頁面
- 15. 確保登錄的用戶只能訪問他的數據
- 16. 重定向登錄,當用戶沒有登錄或用戶嘗試訪問頁面直接從URL使用angularjs
- 17. 保持一個用戶登錄,而他們瀏覽網站
- 18. 保持在同一頁面時取消按鈕點擊Sharepoint登錄
- 19. Json登錄多個用戶登錄在一個登錄頁面
- 20. 只爲登錄用戶登錄表單和保護頁面?
- 21. Drupal6:(所以,角色X的所有用戶都可以暫時受阻,同時保持可用他們的個人資料頁)用戶訪問拒絕登錄
- 22. 登錄後無法保持當前頁面
- 23. 如果2個或更多用戶同時點擊同一頁面,則其他用戶更改登錄
- 24. 記住我/保持登錄狀態,在jsp登錄頁面
- 25. 強制登錄谷歌用戶再次登錄
- 26. ASP MVC 5登錄用戶仍然可以訪問登錄和註冊頁面?
- 27. 阻止登錄用戶訪問asp.net中的登錄頁面mvc 5
- 28. Drupal - 受限內容訪問顯示用戶的登錄頁面
- 29. 允許訪問html頁面只能登錄用戶
- 30. 只允許登錄用戶訪問私人頁面
請問那些回答這個問題的人也可以考慮關於這個話題的安全問題嗎?例如,如何防止通過複製cookie自動登錄。謝謝。 – 2009-12-09 22:12:51
然後至少提到使用會話的固有安全風險;) – Franz 2009-12-09 22:19:03
您應該儘可能重新使用現有的身份驗證框架,因爲它確實很複雜。例如,看看https://github.com/delight-im/PHP-Auth – caw 2016-09-21 04:26:16