Asp.net
如何防止重放攻擊?
這與我問的另一個問題有關。總而言之,我有一個 URL 的特殊情況,當一個表單被發佈到它時,我不能依賴 cookie 進行身份驗證或維護使用者的會話,但我需要知道他們是誰,我需要知道他們已經登錄了!
我想我想出了一個解決我的問題的方法,但它需要充實。這就是我的想法。我創建了一個名為“使用者名”的隱藏表單欄位,並在其中放置使用者的使用者名,加密。然後,當表單發佈時,即使我沒有從瀏覽器收到任何 cookie,我也知道他們已經登錄,因為我可以解密隱藏的表單欄位並獲取使用者名。
我能看到的主要安全漏洞是重放攻擊。如何防止某人獲取該加密字元串並以該使用者身份發布?我知道我可以使用 SSL 使竊取該字元串變得更加困難,也許我可以定期輪換加密密鑰以限制該字元串適用的時間量,但我真的很想找到一個防彈的解決方案。有人有什麼想法嗎?ASP.Net ViewState 是否阻止重播?如果是這樣,他們是如何做到的?
編輯:我希望有一個不需要任何儲存在數據庫中的解決方案。應用程序狀態是可以的,只是它無法在 IIS 重新啟動或在網路場或花園場景中完全工作。我現在接受克里斯的回答,因為我不相信在沒有數據庫的情況下甚至可以保護它。但是如果有人提出不涉及數據庫的答案,我會接受!
如果您在時間戳以及使用者名和密碼中散列,則可以在幾秒鐘內關閉重放攻擊視窗。我不知道這是否滿足您的需求,但它至少是部分解決方案。