2013-04-30 142 views
0

我正在構建一個簡單的Web應用程序,我想使用會話來保持用戶登錄..我已經搜索了很長時間來找出我應該使用哪些變量保存在一個會話,以保持用戶登錄..我應該不保存哪些變量,爲什麼我應該這樣做..我有我所有的會話在memcacheD(注意它是用'D')..PHP哪些變量保存在會話中 - 哪些不保存

也我一直在尋找一本電子書,告訴我如何建立一個基於會話的安全環境..我一直在觀看Facebook保存的變量,但我似乎無法弄清楚他們正在使用它們(顯然這是他們想要什麼,否則它不會那麼安全)。

+0

這可能會幫助你http://stackoverflow.com/questions/77960/what-to-put-in-a-session-variable – 2013-04-30 09:53:33

回答

0

基本會話用於存儲您的邏輯實體。不要存儲大量的數據。保留真正重要的數據,以及可用於檢索其他相關信息的數據。例如,您可以在會話中存儲user_id或用戶名,並使用它來檢索用戶相關信息。

如果使用電子商務網站您可以在cart_id等會話中存儲購物車相關數據。

不存儲:

你不應該存儲信用卡號碼等或任何其他支付細節安全信息。同時存儲用戶密碼或其他相關憑證不應保留在會話中。

對於Facebook,他們基本上使用oAuth標準,這些標準依次具有訪問用戶相關信息的標記化方法。目前它們是非常安全和流行的認證模式。

+0

是否足夠安全,只需要保存用戶名?我的意思是......他們在webapp中的活動狀態期間無法操縱會話? – Anders 2013-04-30 09:58:29

+0

對於他們來說意味着用戶還是黑客? – 2013-04-30 10:02:08

+0

如果有人入侵它,我無論如何都註定要失敗,但我的意思是,如果用戶名足夠了?如果我想從SQL中檢索數據 - 我可以簡單地依賴於它們在登錄時我不需要驗證它們是否仍然是它們?沒有必要在一段時間內比較他們的密碼和用戶名? – Anders 2013-04-30 10:05:03

1

你不能真正知道Facebook存儲的究竟是什麼。
您只能看到存儲在您的Cookie中的所有內容。
在大多數情況下,cookies只接收會話ID,會話本身存儲在服務器上,在你的情況下 - memcached。
您可以在頁面請求之間存儲您需要的任何內容。登錄用戶的ID,可能是一些購物車數據等

+0

他們的登錄數據的加密值是否太愚蠢(e-郵件,密碼),並在一段時間內檢查這些數據或什麼? – Anders 2013-04-30 09:56:50

+0

您爲什麼要將密碼傳回客戶端?通過cookie加密的會話數據也被使用,但只有當你確定你不會傳遞大量的數據,只有用戶ID,上次閱讀文章,登錄前頁面等 – Tigra 2013-04-30 10:03:24