在隱式授權中,訪問令牌在回調URL中發回。這是不是安全風險,因爲如果此回調URL緩存在跳躍。通常建議,不要在URL params中發送敏感數據,並且此訪問令牌將成爲訪問所有受保護用戶資源的令牌。那麼爲什麼它通過URL中的片段Oauth 2.0隱式授權有多安全?
回答
在闡述@弗拉特科的迴應......
爲了減輕在片段發送令牌(或通過任何其他的OAuth2補助金)的風險:
- 確保OAuth的端點和回調終點是TLS(HTTPS)(見countermeasures)
- 發送state parameter,以防止跨站點僞造(另見:http://tools.ietf.org/html/rfc6749#section-4.2.1)
發佈短期訪問令牌(如@vlatko所述)將減少泄漏令牌的影響,但不是預防措施。
就像你指出的那樣,令牌傳遞了URI片段。由於瀏覽器不會將URL的片段發送到HTTP服務器,所以有人可能會竊聽並獲取訪問令牌的機會大幅減少。
還有其他安全措施,例如只在隱式授權流程中發佈短期訪問令牌。
更多的信息在OAuth2 threat models document。
即使當訪問令牌通過HTTPS發送,因爲它的一個片段,將它不會在網絡中有可能爲中間跳服務器嗅出它 – Karthik
嗯,恐怕上面的答案有些誤解。雖然URL查詢字符串在使用TLS時受到保護,因此訪問令牌在運行時受到保護,但它在用戶瀏覽器(其歷史記錄的一部分)中以及目標Web瀏覽器日誌中都已公開。大多數Web瀏覽器都會記錄傳入請求的整個URL。他們是另一個被稱爲「referer」泄漏問題的問題,其中查詢字符串將傳遞給第三方站點。一個很好的概述可以在下面找到:
http://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/
vlatko - 你說的URI片段有一些特殊的屬性,所以嚴格地說我的上面的評論不適用是正確的。但是,這是消息交換的一個非常脆弱的方面 - 您實際上依賴於瀏覽器在重定向時的特定行爲以保護流(即忽略重定向時URI的片段組件)。如果URI片段在某個位置得到拾取,則會爲攻擊者提供多用途令牌。 – user3101375
你是完全正確的。根據定義,這種類型的認證是不安全的。 –
- 1. OAuth 2.0隱式授權流程 - clientId和accessToken暴露安全
- 2. OAuth 2.0授權服務器
- 3. Salesforce Oauth 2.0授權屏幕
- 4. OAuth 2.0授權標頭
- 5. YouTube API v2.0 - OAuth 2.0授權
- 6. OAuth 2.0隱式授權類型與AngularJS前端
- 7. OAuth:爲什麼隱式授權類型被稱爲隱式?
- 8. 如何重置谷歌oauth 2.0授權?
- 9. oauth 2.0再次顯示授權頁面
- 10. OAuth 2.0記得授權許可
- 11. 與Google的DotNetOpenAuth OAuth 2.0授權
- 12. 的OAuth 2.0認證和授權
- 13. Facebook Oauth 2.0授權碼是否過期?
- 14. 的Oauth 2.0授權LinkedIn Android中
- 15. 谷歌的OAuth 2.0 invalid_client未經授權
- 16. 使用JWT的Oauth 2.0授權
- 17. OAuth 2.0代碼授權流程
- 18. 帶有半私密密鑰的OAuth授權代碼的安全
- 19. 授權碼授權協議中的OAuth-2.0瓶頸
- 20. Spring安全授權
- 21. Spring安全授權
- 22. 使用LDAP身份驗證確保OAuth 2.0授權服務器的安全
- 23. 以編程方式從Spring OAuth 2.0授權服務器獲取授權代碼
- 24. OAuth 2授權碼 - 它有效多久?
- 25. Facebook的JavaScript的授權模式對話框使用OAuth 2.0
- 26. 只有彈簧安全授權
- 27. Spring安全/授權級別
- 28. ASP.Net安全授權模型
- 29. Yammer OAUTH 2.0資源所有者密碼憑證授權
- 30. Box Oauth Powershell授權
即使當訪問令牌是通過https發送的,因爲它的一個片段,網絡中的中間跳躍服務器將無法嗅探到它。 – Karthik
你的意思是即使它通過http發送? – codeprogression
如果我們假設Oauth服務器爲X,並且客戶端請求訪問爲Y.那麼即使訪問令牌在https中從X發送到Y時,WWW網絡中從X到Y的中間機器也可以讀取此訪問令牌(即:竊聽https查詢參數/片段,就像竊聽http查詢參數/片段一樣簡單)。 https中僅加密HTTP正文中的數據。 – Karthik