2017-03-07 91 views
0

我想知道密鑰的名稱是否在安全方面很重要。一個獨特的名字比一般的名字更安全嗎?

如果我將用戶的電子郵件存儲在 $_SESSION['email']如果它是像$_SESSION['em_10lettersID']這樣的唯一用戶,會更好嗎?儘管如此,將電子郵件存儲在一個會話中可能並不安全。

回答

0
  • 你所談論的會話變量,而不是會議的名稱。
  • 不,沒關係。任何人都可以打開瀏覽器並查看調試器中的資源,並查看cookie中存儲的內容。如果存儲的值是「[email protected]」,無論您稱之爲「asdfkjh234690hj」還是「電子郵件」都無關緊要。

通常,將電子郵件地址或任何其他敏感信息存儲在會話中不是一個好主意。最好存儲一個可以在數據庫中查找的用戶令牌(如MD5哈希或AES加密的祕密字符串),或者以web根目錄以外的平面文件 - 公共WWW用戶無法訪問的方式)。您的數據庫或數據存儲然後可以使用該密鑰來檢索您需要進入代碼的值。

希望有所幫助。

+2

*「一般來說,將電子郵件地址或任何其他敏感信息存儲在會話中不是一個好主意。」*您的意思是Cookie? – ficuscr

+0

是的,餅乾也是。但是OP沒有詢問cookies。 – TinkerTenorSoftwareGuy

2

讓我們澄清任何誤解。

A 會話是服務器端存儲。沒有什麼更多。通過在包含唯一令牌的設備上存儲cookie,該存儲與設備(「用戶」,如果您願意的話)相關聯。每次請求,設備都會將此cookie(以及令牌)發送到服務器。然後服務器識別該令牌並檢查該令牌是否存在現有的會話。它從存儲裝載會話(默認情況下,該存儲是文件),其內容存儲在$_SESSION變量中。

默認情況下,Cookie的名稱爲PHPSESSID,該令牌是隨機生成的散列。您可以在資源標籤下的Chrome開發者控制檯中檢查此Cookie。

現在,由於會話及其包含的任何內容都不會暴露給用戶(請記住:它在服務器上持續存在),因此存儲的內容無關緊要;客戶不知道。

此規則的例外情況是客戶端獲得對服務器的訪問權限。但是,在這種情況下,您需要擔心的問題更多。

還有一點要注意的是,$_SESSION是每個客戶端/用戶唯一的,他們不能影響對方的$_SESSION

請注意這個解釋有些簡化。

現在你永遠不應該做的是將敏感信息存儲在cookies中$_COOKIE)。他們保存在客戶端/用戶!

相關問題