欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

不依賴第三方存儲,用RSA加密解密來實現token驗證,怎么用算法實現token只能用一次?

吉茹定2年前16瀏覽0評論

對于一些安全性要求高的系統或者請求一些受保護的資源時,我們要進行鑒權,以判斷此次請求是否是被允許的,這里我們就會用到Token機制。Token是由服務器端簽發給客戶端的,出于性能開銷的考慮,一般情況下的Token在一段時間范圍內是可以反復使用的,如果你想實現同個Token只能使用一次,也是有方案的。

Token是什么?為什么要使用Token?

Token是令牌的意思,一般在登錄系統、API認證、密保、邀請碼中被廣泛使用,它是由服務器端產生的。

Token工作流程大概是這樣:

  • 調用方使用用戶名及密碼向服務器端進行請求認證;

  • 若服務器端認證成功,則生成唯一的Token并返回給客戶端;

  • 客戶端下次請求任何資源時都會把Token帶上,交給服務器端進行權限鑒證,以此來證明此次請求的合法性。

這種機制是不是和Session/Cookie很像?那為什么要用Token呢?原因很簡單:

  • Token具有無狀態性,適用于分布式系統,可在多個服務間共享;

  • Token可避免CSRF攻擊;

  • Token能避開同源策略的限制等。

同個Token只能使用一次的實現方案

1、借助Redis來控制Key失效時間(實施成本低,推薦此方法)

我們可以把Token作為Redis中的某個Key,同時設置TTL,當此Token使用過一次后就刪除Redis中對應的Key即可。

2、Token重新簽發(存在性能問題)

一個Token原始數據(加密之前的數據)中應包含一個時間戳,當服務器端拿到客戶端傳遞過來的Token時先判斷是否合法,若合法則解析Token,拿出里面的數據,將時間戳改為當前,然后重新計算生成新的Token并返回給客戶端。

這種方法雖很安全,但考慮到RSA等加密也是要消耗CPU性能的,這塊需要綜合考慮。

以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區交流~我是科技領域創作者,十年互聯網從業經驗,我了解更多科技知識!