我有一個java servlet web應用程序。在應用程序中,我有兩個授權邏輯: 1.通過用戶名和密碼進行授權 - 通過網絡表單進行標準登錄,並輸入用戶填寫的用戶名和密碼。 2.通過cookies授權。一旦用戶填寫了用戶名和密碼,並選中「記住我」複選框,此後他不應輸入用戶名/密碼。 我有一個關於選項二(餅乾)的問題。目前邏輯是:我檢查用戶是否選中了「記住我」,我得到了他的用戶名和密碼哈希,並將其存儲到cookie中。 (兩個餅乾:用戶名,密碼)但是,我認爲這種方式並不安全。因爲有人可以竊取cookie並訪問網絡應用程序。 問題是:什麼是通過cookie授權用戶的最佳安全途徑?我應該在cookeis中儲存什麼?Java web應用程序通過cookie進行安全授權
1
A
回答
0
如果您使用的是HTTPS(您應該是),除非他們從該人的實際計算機上獲取該信息,否則沒有人可以「竊取」Cookie。只要確保一旦用戶登錄後,他們就不會使用正常的HTTP請求訪問該頁面,否則您的cookie數據將被公開。
1
首先您要使用SSL/TLS與您的服務器進行通信。你可以爲你的網站購買便宜的證書,所以不要爲此付出代價。即使這樣,你也不應該將用戶名和密碼存儲在cookie中,這是不安全的,因爲有人可以破解他們的計算機並檢索他們的密碼,這不是你的問題,但甚至不會讓你陷入混亂中,回來咬你。
您通常會創建一個隨機sessionid,並在一段時間後過期,並將其與當前時間戳一起插入到您的用戶表中。該sessionid是您存儲在cookie中的內容,並且您每次嘗試使用cookie登錄時都會在數據庫中檢查它。如果它太舊了(你檢查時間戳與你決定的任何長度),那麼你使sessionID無效,並要求他們用他們的用戶名和密碼登錄,從而創建一個新的sessionid。
它還有更多的功能可以防止cookie被複制到另一臺計算機上(您不必擔心它被複制通過網絡,這就是SSL/TLS的用途),比如添加IP地址和瀏覽器到cookie,還有一些其他的東西,但這可能是爲了你所做的事情而矯枉過正。
相關問題
- 1. java WEB應用程序 - 通過域用戶授權
- 2. 通過cookie授權
- 3. Web應用程序授權
- 4. Android應用程序通過Google+授權
- 5. 通過JWT進行應用程序認證和授權
- 6. 通過GET參數進行Spring安全授權
- 7. Java的Web應用程序安全使用cookie
- 8. Java應用程序安全權限
- 9. 通過Angular授權是否安全?
- 10. Java Web應用程序安全理念
- 11. ASP.net安全問題「授權」和「.ASPXAUTH」Cookie
- 12. Web應用程序安全
- 13. Web應用程序安全
- 14. 安卓應用程序授權
- 15. 是否可以使用spring安全性從cookie只進行授權(acl)?
- 16. 通過Web應用程序安排SSIS
- 17. 通過串行端口進行通信的Web應用程序
- 18. 安全Google Plus通過Android應用程序登錄到Web應用程序
- 19. 安全驗證/在一個單頁的應用程序授權
- 20. 設置授權Java EE應用程序
- 21. 通過Active Directory爲Web應用程序提供安全性
- 22. Java Web應用程序的身份驗證和授權框架
- 23. 應用程序洞察安全Cookie
- 24. 通過套接字與Windows應用程序進行Web應用程序通信
- 25. 通過SSH運行web應用程序
- 26. 核心Java應用程序中的安全身份驗證和授權
- 27. 如何安全地使用API與兩個Web應用程序進行通信?
- 28. Web應用程序:只與服務器授權通信
- 29. Spring安全授權
- 30. Spring安全授權
您是否認爲在cookies中存儲登錄名和密碼是正常的? – Andrew
我不確定這是否正常,但對於一個額外的安全層,它不會傷害到加密/解密該cookie中的用戶信息。 –