假設Bob發送該HTTP請求的API來更新他的電子郵件:如何防止再次使用已簽名的請求?
/user/[email protected]&userid=1234&sig=x1zz645
現在,一個名爲Zerocool嗅探器記錄以備後用此請求。
幾天後,鮑勃再次將他的電子郵件更新爲[email protected]
。
幾個小時後Zerocool現在決定用什麼,他聞了聞,前幾天和運行要求:
/user/[email protected]&userid=1234&sig=x1zz645
服務器接受它,而Bob是現在困惑,爲什麼是舊的電子郵件回來。
如何在不使用SSL的情況下防止這種情況發生?
服務器應該允許一些時間差,除非服務器和客戶端完全同步。檢查日誌也可能很複雜。最好每個請求都生成一個隨機數(唯一字符串),並檢查隨機數是否有重複。 – 2013-04-04 12:25:12
EJP的答案是正確的,你應該使用SSL。這個答案是不安全的。有了這個嘗試的解決方案,在中間人攻擊可以很容易地截取郵件,並將其重播到服務器,同時防止請求到達服務器。簽署時間戳沒有任何措施來防止這個漏洞。 – user1678406 2014-05-21 20:30:14