2011-01-20 139 views
1

我正在api上工作。 api將被iphone應用程序使用。保護api免受重播攻擊

該api需要登錄。我們用asp.net表單認證來保護它。客戶獲得一個cookie以重新發送即將到來的請求。

我們使用的是https,但我想仍然可以重播請求。我該如何保護,以便cookie只能由首次登錄的客戶端使用?

我在考慮在每次請求時更新cookie。但該應用有時會發送幾個異步請求。所以這不會工作。

/帕特里克

回答

1

也許你不關心,如果任何動作可以重播,例如異步請求可能會得到一些非重要信息。

仍然可以要求應用程序在每次執行操作之前都要重新登錄,這會導致財務或安全後果。

我希望你永遠不要通過網絡交換認證機密(密碼)。相反,您嚮應用發送挑戰字符串,應用會使用密碼對其進行編碼併發回。服務器執行相同的操作並比較結果。在任何重要行動之前,這一操作都很容易重複,甚至作爲重要行動的一部分:答覆由祕密編碼發送。除非竊聽者知道這個祕密,否則他不會重播一個動作,因爲服務器發送的挑戰將會不同。

不,我不知道這個方案是否符合asp.net認證機制。

0

您可能會嘗試讓客戶端發送加密或散列保護的序列號和每個事務的時間戳,並檢查服務器端的重複項。

+1

時間戳只有在兩端都具有同步時鐘時才起作用,即使如此,您仍然必須留下一個「鬆弛窗口」來解決差異。 – Marcin 2011-01-20 22:04:17

0

除了爲您的應用程序使用SSL連接以確保沒有人盜取cookie之前,沒有防止利用被盜認證cookie的重放攻擊的傻瓜式方法。

最好的辦法是將cookie過期設置爲非常低的值,並要求用戶在超時後重新輸入憑據。理想情況下,這將是一個滑動窗口,但如果您不介意真正打勾用戶,則可以使其成爲絕對的窗口。

相關問題