2017-10-20 75 views

回答

6

狀態和隨機數似乎是相似的。但是如果你深入挖掘,你會發現它們有不同的用途。

狀態是否有保護最終用戶免受跨站請求僞造(CSRF)攻擊。

RFC6749指出,

一旦授權被從最終用戶所獲得,所述 授權服務器的最終用戶的用戶代理重定向回 客戶端與包含在所需要的結合值「狀態」 參數。所述結合值使得客戶端通過匹配結合值到 用戶代理的認證狀態

來驗證該請求的有效性 ,這是用於授權請求。它使客戶能夠驗證授權響應沒有被改變。基本上它允許客戶交叉檢查授權請求和響應。

隨機數服務於不同的目的。它將令牌與客戶綁定。它用作令牌驗證參數。

隨機數 - 用於與ID令牌客戶端會話相關聯,並減輕重放攻擊的字符串值。該值從未經修改的身份驗證請求傳遞給ID令牌。如果存在於ID令牌中,則客戶端必須驗證該隨機的聲明值等於在認證請求中發送的隨機數參數的值。如果認證請求中存在,授權服務器必須在ID令牌中包含一個隨機數聲明,聲明值是在認證請求中發送的隨機數值。授權服務器應該對所使用的nonce值執行任何其他處理。 nonce值是區分大小寫的字符串

正如您所見,nonce值來自授權請求並由客戶端生成。如果包含nonce,它將出現在令牌中。因此,客戶端可以根據初始授權請求驗證其收到的令牌,從而確保令牌的有效性。

此外,根據流量類型,現時值可以是強制參數。隱式流和混合流授權值現時值值。

+0

如果我們將狀態本身作爲隨機數傳遞給ID標記,並且在ID之外,那麼會有什麼壞處?使用外部阻止CSRF和內部阻止在客戶端綁定會話。 – dvsakgec

+0

@dvsakgec從協議的角度來看,利用狀態和隨機數來進行安全性和驗證是個問題。據我所知,規範並不限制你爲狀態和隨機數使用相同的值。在複雜的攻擊向量中,人們可以從授權響應中提取狀態值(例如: - 移動應用程序)。因此,具有相同的值會從您的令牌驗證過程中刪除一個條件,這並不好 –

相關問題