這是跨越我的想法,我想知道是否有可能將信息存儲在PHP的$ _SESSION變量中有多安全?
27
A
回答
38
將變量存儲在$ _SESSION變量中有兩個潛在的「不安全性」。
- 第一個如其他答案所述稱爲「會話固定」。這裏的想法是,由於會話ID存儲在cookie中,所以ID可以更改爲另一個用戶的ID。如果用戶在每個會話中獲得一個新的ID,這不是問題,因此很難找到當前工作會話的ID並劫持它。
- 第二個完全取決於你的代碼。如果你的代碼泄漏你存儲在$ _SESSION中的祕密信息的值,那麼它是不安全的。如果你的代碼允許用戶控制這些信息的值,那麼它是不安全的。否則,如果$ _SESSION變量中有某些內容,並且您的代碼永遠不允許用戶看到它或寫入它,那麼它是安全的。
2
$_SESSION
完全存儲在服務器上,所以用戶不能修改它。但是,當用戶連接到其他用戶的會話時,會話劫持攻擊可能會發生。
1
會話數據存儲在服務器上。
0
安全性較差的$_COOKIES
位於客戶端計算機上,$_SESSION
存儲在服務器上。它的位置取決於php.ini的session.save_path
。但仍然存在安全問題,如session fixation
10
PHP會話的工作是在最終用戶的計算機上存儲一個PHPSESSID
cookie,該cookie用作基於服務器的會話信息的訪問密鑰。該cookie值是一個哈希字符串(安全性取決於您的PHP設置),用於將特定瀏覽器鏈接到您設置的特定會話值。
該字符串看起來像b420803490a9f0fe8d6a80657fec3160
。所以,最終用戶可以改變這個字符串,但是他們的會話將變得無效,因爲它幾乎肯定不會與PHP存儲的會話匹配,並且他們將無法訪問數據。
正如其他人所說的,某人的某個PHPSESSID
有被暴露的危險,並且有人用它來劫持別人的會話。
相關問題
- 1. 用戶可以訪問$ _SESSION變量嗎?
- 2. PHP進度條可以使用$ _SESSION嗎?
- 3. 我可以更改PendingIntent中的值嗎?
- 4. 用戶可以修改PHP會話嗎?
- 5. Firebase用戶標識可以更改嗎?
- 6. PHP客戶端可以設置$ _SESSION變量嗎?
- 7. PHP在測試中修改$ _SESSION值
- 8. 我可以在Wordpress中臨時更改用戶的角色嗎?
- 9. 我可以在PHP上使用$ _SESSION計數嗎?
- 10. 可以在cgi/ruby腳本中訪問php $ _SESSION變量嗎?
- 11. 是否可以更改$ _SESSION變量客戶端?
- 12. 我可以更改Environment.NewLine的價值嗎?
- 13. 我們可以更改ServerVariables的值嗎?
- 14. JavaScript可以更改@page CSS的值嗎?
- 15. 惡意用戶可能編輯$ _SESSION嗎?
- 16. 我可以在環回中更改用戶模型憑證嗎?
- 17. 是否可以在PHP中更改$ _ ['http_referer']?
- 18. 用$ .ajax更改$ _SESSION
- 19. 我可以使用$ _SESSION作爲memcache嗎?
- 20. 我可以在PHP和度假村中更改SQL數組中的值嗎?
- 21. 我可以更改laravel中的用戶表結構嗎?
- 22. 我可以更改坐在PHP函數中的局部變量的值嗎?
- 23. 我可以更改最終int值嗎
- 24. 我可以在lua中更改os.tmpname()嗎?
- 25. 我可以在iframe中更改window.top.location嗎?
- 26. 我可以使用插件更改Firefox中的配置值嗎?
- 27. 最終靜態字段的值可以在android中更改嗎?
- 28. 我可以在openmdao的solve_nonlinear中更改參數值嗎?
- 29. 在另一個應用程序中更改_Session的值
- 30. PHP $ _SESSION空值
+1因爲這是迄今爲止唯一的答案,它解決了不安全編碼所允許的漏洞。 – 2011-02-25 20:06:30
你是什麼意思「如果你的代碼泄漏的價值」 – 2011-02-25 20:18:11
泄漏會像'你好,$ _SESSION ['用戶名'],你的密碼是$ _SESSION ['密碼']''。會話數據保存在服務器上,除非您明確輸出代碼的任何部分,否則永遠不會被遠程用戶查看。 – 2011-02-25 20:29:09