2012-10-01 80 views
1

我有一個java servlet web應用程序。在應用程序中,我有兩個授權邏輯: 1.通過用戶名和密碼進行授權 - 通過網絡表單進行標準登錄,並輸入用戶填寫的用戶名和密碼。 2.通過cookies授權。一旦用戶填寫了用戶名和密碼,並選中「記住我」複選框,此後他不應輸入用戶名/密碼。 我有一個關於選項二(餅乾)的問題。目前邏輯是:我檢查用戶是否選中了「記住我」,我得到了他的用戶名和密碼哈希,並將其存儲到cookie中。 (兩個餅乾:用戶名,密碼)但是,我認爲這種方式並不安全。因爲有人可以竊取cookie並訪問網絡應用程序。 問題是:什麼是通過cookie授權用戶的最佳安全途徑?我應該在cookeis中儲存什麼?Java web應用程序通過cookie進行安全授權

回答

0

如果您使用的是HTTPS(您應該是),除非他們從該人的實際計算機上獲取該信息,否則沒有人可以「竊取」Cookie。只要確保一旦用戶登錄後,他們就不會使用正常的HTTP請求訪問該頁面,否則您的cookie數據將被公開。

+1

您是否認爲在cookies中存儲登錄名和密碼是正常的? – Andrew

+0

我不確定這是否正常,但對於一個額外的安全層,它不會傷害到加密/解密該cookie中的用戶信息。 –

1

首先您要使用SSL/TLS與您的服務器進行通信。你可以爲你的網站購買便宜的證書,所以不要爲此付出代價。即使這樣,你也不應該將用戶名和密碼存儲在cookie中,這是不安全的,因爲有人可以破解他們的計算機並檢索他們的密碼,這不是你的問題,但甚至不會讓你陷入混亂中,回來咬你。

您通常會創建一個隨機sessionid,並在一段時間後過期,並將其與當前時間戳一起插入到您的用戶表中。該sessionid是您存儲在cookie中的內容,並且您每次嘗試使用cookie登錄時都會在數據庫中檢查它。如果它太舊了(你檢查時間戳與你決定的任何長度),那麼你使sessionID無效,並要求他們用他們的用戶名和密碼登錄,從而創建一個新的sessionid。

它還有更多的功能可以防止cookie被複制到另一臺計算機上(您不必擔心它被複制通過網絡,這就是SSL/TLS的用途),比如添加IP地址和瀏覽器到cookie,還有一些其他的東西,但這可能是爲了你所做的事情而矯枉過正。