2013-08-24 19 views
2

我有一個具有登錄功能的網站,並且我將該用戶的用戶名存儲在cookie中。爲那些禁用了Cookie的人保存數據

我有幾個問題:

  1. 如果我想有這個人的用戶名保存的,應該把它單獨作爲進行會話或餅乾嗎?
  2. 我應該爲那些禁用cookies的人做些什麼?我不應該存儲任何內容,只需讓他們每次都登錄?

謝謝。

+0

如果cookie被禁用,會話cookie仍然可以作爲GET變量使用直接URL。 '?session = d41d8cd98f00b204e9800998ecf8427e'我會建議顯示某種頁面,指示用戶應該啓用cookie。 –

+0

你應該簽出HTML5本地存儲 –

+0

@DaveChen不喜歡將信息放入URL中。 :P –

回答

-2

Surly session更好,如果將它保存爲cookie,任何人都可以通過它注入。編輯他/她的瀏覽器cookie以便以其他用戶身份登錄。但是最好也可以閱讀會話劫持

對於誰擁有現代瀏覽器,您可以使用Web Storage而不是cookie。

+0

他們實際上是否以另一個用戶身份登錄(例如,他們是否可以用他們的名字發佈等),還是隻在他們的屏幕上顯示其他人的姓名? –

+0

這取決於您的代碼,如果您使用包含用戶名的保存的cookie對用戶進行身份驗證,則會以另一個身份登錄,並且可以像他/她一樣行事。 –

+0

有一次,它被稱爲localStorage,第二:w3schools是一個錯誤的和誤導性的網站。您不應該將其用作任何語言的參考。對於PHP,有[PHP手冊](http://php.net),對於JavaScript,有[Mozilla開發者網絡(或MDN)](https://developer.mozilla.org/)。請參閱http://w3fools.com以進一步瞭解爲什麼您不應該使用w3schools。 –

-1

如果您只保存用戶名以便「記住」而不是密碼,那麼使用cookie應該沒問題。但是,當保留每個用戶的登錄信息(即會話)時,您應該始終使用會話。換句話說,只使用cookie來處理從一次使用到下一次使用所需的非安全信息,並將會話用於每個人使用所需的安全信息。

+0

真的嗎?你確定嗎?因爲我可以將我的cookie更改爲「Admin」,並且我突然登錄到管理員帳戶! –

+0

您仍然必須知道管理員密碼才能真正登錄。 –

+0

不,您不會。如果你的cookie只保留用戶名,服務器就會相信這個cookie寫的是真的,那麼我需要知道的就是管理員的用戶名。服務器會相信我是他,因爲我有他的密碼。 –

4
  1. 用戶的詳細信息應保存在會話中。會話變量存儲在服務器上,只有會話ID暴露給用戶。使用Cookie保存很長一段時間的登錄狀態。確保安全地使用它。
  2. 禁用cookies的用戶只能通過GET變量使用會話。會話ID通過URL傳回服務器。

請參閱How do Cookies and Sessions work?瞭解更多信息。

+0

應該在每頁加載時檢查cookie安全性還是用戶登錄時? –

+0

@ErikFischer:應該首先檢查會話。如果沒有會話ID,請檢查cookie以驗證用戶身份。總而言之,沒有什麼比老式的再次提交登錄表單更好,以確保用戶是他自稱的那個人。有關安全cookie的更多信息,請閱讀http://jaspan.com/improved_persistent_login_cookie_best_practice –

+0

以下是我登錄頁面的一小部分內容。這是安全的嗎?我在用戶登錄後在其他頁面上使用/顯示cookie,順便說一下:[http://pastebin.com/eKmzPq7m](http://pastebin.com/eKmzPq7m) –

1

如果我想保存該用戶的用戶名,是否應該僅將其作爲會話或cookie來完成?

實現會話的標準方法是使用cookie。唯一的問題是如果你想存儲一個持久性 cookie,以便他們不必再次登錄,如果他們關閉瀏覽器,然後再回來。

我應該爲那些禁用cookies的人做些什麼?我不應該存儲任何內容,只需讓他們每次都登錄?

雖然你可以通過令牌通過各種形式的每一個環節和隱藏輸入的查詢字符串實現會議系統,這種方法很容易泄漏會話(如人會複製/粘貼網址,並給他們對其他人),並需要更多的努力(尤其是如果你開始使用JavaScript引導瀏覽器到URL)。

Cookie是在WWW上保持狀態的標準方式,對於依賴於狀態的站點部分(例如跟蹤登錄的用戶)只有在用戶啓用了Cookie後才能工作是完全合理的。

這是一小部分禁用cookies的用戶,如果他們想登錄到某個網站,他們可以重新啓用它們。