我正在實現一個REST API認證系統。使用時間戳的API身份驗證:當客戶端的時間設置更改時該怎麼辦?
我基本上是使用方法在這個網站解釋說:
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
基本上它採用請求主體創造一個哈希值,它與實際的請求一起發送到服務器,服務器重新創建和進行比較,並沒有什麼...
我不會打擾解釋細節。最重要的部分是我使用時間戳爲了防止「重放攻擊」。
從網站引用,它說明:
當前服務器的時間戳進行比較,以時間戳的客戶端發送。確保兩個時間戳之間的差值在可接受的時間限制內(5-15分鐘),以阻止重放攻擊。
我現在面臨的問題是,如果客戶端的時鐘設置被修改,可能會導致意想不到的API認證失敗,因爲時間戳的客戶端和服務器之間變化。
有沒有辦法解決這個?我必須放棄使用時間戳嗎?
我會非常感激,如果有人可以幫助我走出這個時間戳問題的解決方案,或者我可以防止重放攻擊任何其他方式。
注意:我知道給客戶端發佈一個nonce是防止「重放攻擊」的一種很好的方法,但是我想做出我最後的選擇,因爲創建nonce-issued- API和用於管理臨時數的後端太大。
如果客戶端的時鐘設置進行修改,坦言有的確會認證失敗,沒有人能除了客戶端之外的幫助必須調查並更改設置。有幾件事情真的不用擔心。 5-15分鐘也是一個可以接受的限制。它應該是+60秒。不要停止發送時間戳的想法,只爲一個不負責任的客戶。你的問題是非常好的。 – Satish
嗨,我有同樣的問題,你解決它嗎?謝謝 –