[英]How exactly hash fragment based security works?
我正在學習OAuth 2.0,無法在隱式授權流程中獲得保護訪問令牌的方法。 規范中有一些論文和一些看起來相互矛盾的SO答案。 有人可以清理一下嗎? 來自SO答案和規范的引言令我感到困惑:
我的問題:
P1表示通過重定向URI和P2傳遞給客戶端的令牌表示傳遞通道必須是TLS編輯的。 但是P3說哈希片段沒有發送到網絡 。 如果訪問令牌沒有發送,那么它是如何到達客戶端的,因為它是哈希片段? 無論如何,它必須通過網絡發送不是嗎? 或者使用重定向URI發送令牌可以在沒有網絡交易的情
唯一可能的解釋 - 在引擎蓋下瀏覽器僅通過網絡發送url的非哈希部分,並且在加載新頁面之后,只需插入哈希片段並使其可用於JS。 如果我是對的,我仍然無法理解為什么我們不使用可靠,安全的HTTPS通道作為響應參數發送令牌?
OAuth提供程序使用HTTP響應重定向將訪問令牌發送回OAuth使用者:
HTTP/1.1 302 Found
Location: https://consumer.org/redirect_uri#access_token=1111-2222-3333-4444
請注意訪問令牌是如何通過網絡發送的,作為來自OAuth提供程序的HTTP響應的一部分,除了使用者之外,它還應該在HTTPS上。
然后,您的瀏覽器將對使用者端點執行新的HTTP GET請求:
GET /redirect_uri HTTP/1.1
Host: consumer.org
請注意如何通過網絡將訪問令牌發送給使用者。 consumer.org
的服務器不會在此HTTP請求中收到令牌。 相反,從https://consumer.org/redirect_uri
返回的網頁將包含能夠並將從url片段讀取訪問令牌的javascript。
因此,您需要信任從consumer.org(通過使用HTTPS)收到的javascript代碼,因為如果攻擊者可以注入代碼,它也可以間接獲取訪問令牌(並將其發送到任何地方)。
來自消費者的HTTP響應示例:
200 OK
Content-Type: text/html
<html><head><script>
alert(window.location.hash)
</script>
</head><body></body></html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.