2016-12-18 24 views
0

CB = gapi.loaded_0:格式化:2677拒絕了,因爲它違反了以下內容安全策略來應用內嵌樣式:「風格-src的 '自我' https://apis.google.com

n.setAttribute ( 「風格」, 「位置:絕對的;寬度:1px的;高度:1px的;左邊:-9999px;」);

下面是完整的消息:

拒絕,因爲它違反了以下申請聯樣式內容安全策略指令:「style-src'self'https://apis.google.com'sha256-g1S9hiXQ4j0r + GB1Gi3NXXa9uB + 5dR2H21SD7BToUKg ='」。'unsafe-inline'關鍵字,一個散列('sha256-WuACXZzzdK kWqck4qh4/nDEQy6ZpPTP0wGUXa/3oqT4 ='),或者需要一個隨機數('nonce -...')來啓用內聯執行。

我不想啓用'unsafe-inline'。我有什麼選擇?如上所示,似乎我只能在我的style-src指令中包含一個sha1哈希。但是,我得到多個內聯樣式違規,每個暗示自己的sha1散列。可能是我使用錯誤的語法來包含多個sha1哈希值?有什麼建議麼?

感謝。

+0

順便說一句,它不是sha1,它是sha256。 CSP也允許使用sha384或sha512。 – pkalinow

+0

是的。這是一個錯字。 – bumi001

回答

0

由於我不想使用不安全的inline,我最終使用了OpenID Connect API。它更多地涉及到(正確)實施。由於谷歌使用iframe注入他們的代碼,我認爲他們會在iframe中使用<風格>標籤來快速修復此問題。我認爲這對開發人員來說會更方便,因爲他們不必使用OpenID Connect。在這之前,我認爲OpenID Connect是一條可行的路。

1

問題不在於你只能指定一個散列 - 這是不正確的。您可以指定更多散列,例如

style-src 'self' 'sha256-g1S9hiXQ4j0r+GB1Gi3NXXa9uB+5dR2H21SD7BToUKg=' 'sha256-WuACXZzzdKkWqck4qh4/nDEQy6ZpPTP0wGUXa/3oqT4=' 

的問題是,在至少一些瀏覽器(瀏覽器,Safari瀏覽器)應用「shaXXX」規則<style>元件只,不style屬性。見:https://bugs.chromium.org/p/chromium/issues/detail?id=546106

那麼,有什麼選擇?

  • 使用unsafe-inline(不推薦),
  • 重寫使用<style>標籤和使用 'shaXXX' 或 '隨機數' 的代碼,
  • 使用獨立的樣式表(推薦)。
+0

問題是gapi.loaded_0不是我的代碼。這是谷歌的代碼。所以,我不能使用你的建議(2)和(3)。我想到你可以添加更多的sha256哈希。但是,它會在代碼中的其他地方產生與另一個散列相同的錯誤。 – bumi001

相關問題