簡體   English   中英

如何防止復制已簽名的 JWT 令牌?

[英]How replication of signed JWT Tokens are prevented?

所以我的問題是關於非對稱簽名的 JWT 令牌。 JWT個token是如何保證簽名不能被復制的? 如果有人捕獲了 JWT,是什么阻止他在未經適當授權的情況下一遍又一遍地重復使用相同的 JWT? 我相信 JWT 可以有一個到期日期,但這並不能解決問題,因為大多數應用程序的到期日期都相對較長,以提供良好的用戶體驗。 我能想到的最簡單但天真的解決方案是從 0 開始附加到用戶的隨機數,並在每次使用 jwt 時遞增,並處理請求。

防止復制 JWT 的簽名依賴於您正確存儲簽署 JWT 的密鑰,無論是在安全存儲還是其他安全位置,重用是另一回事。

現在,首先,我還擔心攻擊者是否可以輕易竊取您的 JWT,這幾乎意味着您不使用 HTTPS/SSL,但是可以肯定的是,假設我們正在運行一個有人利用您的 SSL 的場景。

JWT 本身只不過是對客戶端進行身份驗證的方式,幾乎類似於 API 密鑰的工作方式。 客戶端可以使用該令牌訪問某些資源幾乎是一種授權。 它在這方面沒有任何安全價值,除了在某些時候客戶端使用正確的憑據對自己進行身份驗證之外。

所以如果它被盜,你就有問題了。 這就是代幣生命周期發揮作用的地方。 令牌可能會很快過期,導致攻擊者只能在短時間內訪問資源,但他們仍然可以訪問他們不應該訪問的資源。

在這方面,您可以像您提到的那樣嘗試使用隨機數來減輕攻擊。 只是不要忘記通過與身份相關的密鑰或 JWT 的 session 來保護該隨機數。或者,您可以向請求添加 HOTP 或 TOTP,或一些唯一的簽名。 這是以您必須在客戶端和服務器上創建額外邏輯為代價的。

綜上所述,JWT 本身並不真正提供安全性,它們提供身份驗證。 一般來說,如果使用現代安全措施(例如 SSL),JWT 是安全的。如果您真的想為請求添加額外的安全性,您可以通過在客戶端和服務器上實現更多邏輯來實現額外的邏輯,例如 OTP 或簽名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM