2013-05-29 36 views
0

我的老闆希望我改編一個Java web應用程序,通過在地址欄中輸入URL來有效地禁用在Java webapp中導航的能力。Java:網頁上嵌入的加密UID是否可以生效?

我想出了一些策略來實現這一點。

我正在考慮的一件事就是生成一個唯一的ID號,並將其打印在JSP中的隱藏表單字段中,以通過HTTP POST請求發送回服務器。

我知道有人希望玩遊戲,可以保存頁面並從生成的靜態文件中提交帖子。

我在考慮加密身份證號碼,但我想知道是否有一點要這樣做?它將在服務器端被解密,就像用戶點擊導航按鈕一樣,或者如果黑客用戶查看源並使用腳本/靜態HTML頁面將ID號碼發送回服務器。

我錯過了什麼嗎?

+2

首先這樣的努力有什麼意義? –

+0

你想擁有一個不像網絡應用程序的網絡應用程序? – GriffeyDog

+0

重點是強制用戶只使用按鈕和鏈接在網站內進行導航。 – Steve

回答

0

這一切都取決於使用的策略,但UID的加密本身並不是一個好的解決方案。具有任何依靠加密的安全性的最重要的部分是協議和密鑰管理。基本上,如果你不能相信兩者中的一個,那麼你的應用程序是不安全的。如果加密的UID只是被視爲一個靜態變量,那麼任何人都可以簡單地複製加密的UID(就像你在問題中所做的那樣)。

你可以做的是使用存儲在cookie中和服務器上的UID。用它來創建一個密鑰(使用密鑰派生函數)。現在,如果有請求,請確保請求包含唯一號碼(例如會話ID +計數器)。現在您可以使用先前計算的密鑰創建消息認證碼,base64對其進行編碼並將其與請求一起發送。然後你在服務器端驗證這個MAC(使用密鑰,數據,當然還有MAC數據)。

即使這種方案當然也不能阻止黑客。爲此,您至少需要使用TLS連接來確保在傳輸過程中無法讀取UID(用於生成密鑰)。基本上,如果沒有TLS,您無法創建足夠安全的解決方案來阻止有針對性的中間人攻擊。

相關問題