當用戶在我們的Struts應用程序中註冊時,我們想向他們發送一封電子郵件,其中包含指向其他頁面的鏈接。該鏈接需要在其查詢字符串中包含唯一標識符,以便目標頁面可以識別用戶並作出相應的反應。用Java保護查詢字符串的最佳方式是什麼?
爲了改善這種系統的安全性,我想先加密包含識別符的查詢字符串和第二設置鏈接到期 - 和/或幾天後它被使用之後。
什麼Java技術/方法,你會建議我用它來做到這一點?
當用戶在我們的Struts應用程序中註冊時,我們想向他們發送一封電子郵件,其中包含指向其他頁面的鏈接。該鏈接需要在其查詢字符串中包含唯一標識符,以便目標頁面可以識別用戶並作出相應的反應。用Java保護查詢字符串的最佳方式是什麼?
爲了改善這種系統的安全性,我想先加密包含識別符的查詢字符串和第二設置鏈接到期 - 和/或幾天後它被使用之後。
什麼Java技術/方法,你會建議我用它來做到這一點?
我打算讓你擔心一些假設:
以下是我想做到這一點。
對於第一部分看看Generating Private, Unique, Secure URLs。過期時,您只需將唯一密鑰創建時間戳存儲在數據庫中,並且僅允許您的操作在例如now-keyCreatedAt 3天內執行。另一種方法是讓cron或Quartz作業定期刪除那些評估「now-keyCreatedAt < 3天」爲真的行。
我認爲你可以以無狀態的方式做到這一點,即沒有其他人建議的數據庫表。
當URL上的用戶點擊:
只要你永遠不會泄漏你的祕密鹽串,沒有人能夠僞造對系統的請求。但是,與其他提議不同,這不妨礙重播舊的URL。根據你的情況,這可能是也可能不是理想的。
這是一個很好的方法。然而,我只是選擇一個隨機的128位標識符,而不是散列。它更簡單,同樣安全,如果不是更多的話。 – erickson 2009-03-04 20:29:05