2013-01-12 180 views
7

在隱式授權中,訪問令牌在回調URL中發回。這是不是安全風險,因爲如果此回調URL緩存在跳躍。通常建議,不要在URL params中發送敏感數據,並且此訪問令牌將成爲訪問所有受保護用戶資源的令牌。那麼爲什麼它通過URL中的片段Oauth 2.0隱式授權有多安全?

回答

2

在闡述@弗拉特科的迴應......

爲了減輕在片段發送令牌(或通過任何其他的OAuth2補助金)的風險:

發佈短期訪問令牌(如@vlatko所述)將減少泄漏令牌的影響,但不是預防措施。

+1

即使當訪問令牌是通過https發送的,因爲它的一個片段,網絡中的中間跳躍服務器將無法嗅探到它。 – Karthik

+0

你的意思是即使它通過http發送? – codeprogression

+0

如果我們假設Oauth服務器爲X,並且客戶端請求訪問爲Y.那麼即使訪問令牌在https中從X發送到Y時,WWW網絡中從X到Y的中間機器也可以讀取此訪問令牌(即:竊聽https查詢參數/片段,就像竊聽http查詢參數/片段一樣簡單)。 https中僅加密HTTP正文中的數據。 – Karthik

2

就像你指出的那樣,令牌傳遞了URI片段。由於瀏覽器不會將URL的片段發送到HTTP服務器,所以有人可能會竊聽並獲取訪問令牌的機會大幅減少。

還有其他安全措施,例如只在隱式授權流程中發佈短期訪問令牌。

更多的信息在OAuth2 threat models document

+0

即使當訪問令牌通過HTTPS發送,因爲它的一個片段,將它不會在網絡中有可能爲中間跳服務器嗅出它 – Karthik

5

嗯,恐怕上面的答案有些誤解。雖然URL查詢字符串在使用TLS時受到保護,因此訪問令牌在運行時受到保護,但它在用戶瀏覽器(其歷史記錄的一部分)中以及目標Web瀏覽器日誌中都已公開。大多數Web瀏覽器都會記錄傳入請求的整個URL。他們是另一個被稱爲「referer」泄漏問題的問題,其中查詢字符串將傳遞給第三方站點。一個很好的概述可以在下面找到:

http://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/

+0

vlatko - 你說的URI片段有一些特殊的屬性,所以嚴格地說我的上面的評論不適用是正確的。但是,這是消息交換的一個非常脆弱的方面 - 您實際上依賴於瀏覽器在重定向時的特定行爲以保護流(即忽略重定向時URI的片段組件)。如果URI片段在某個位置得到拾取,則會爲攻擊者提供多用途令牌。 – user3101375

+0

你是完全正確的。根據定義,這種類型的認證是不安全的。 –