Chromeのコンテンツセキュリティポリシーを緩和する方法は?


17

最近、Facebookなどの一部のWebサイトでは、コンテンツセキュリティポリシー(CSP)を使用して、「信頼できないソース」からのスクリプトの読み込みを制限しています。たとえば、Facebook HTMLコンテンツ(例:https : //www.facebook.com)を要求する場合、FacebookのHTTP応答には次の応答ヘッダーが含まれます。

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

これは、信頼できないソースからJavascriptライブラリをロードして実行する必要があるブックマークレットに影響を与えます。

たとえば、FacebookページでShow Anchorsブックマークレットを実行しようとすると、信頼できないソースからjQueryをロードしようとするため、このブックマークレットの実行は失敗します。Chromeのデベロッパーコンソールでは、次のように表示されます。

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

このトピックに関するChromeドキュメントページを見つけましたが、これはChrome 拡張機能にのみ適用されます。

私ができるソリューションを探しています

  • CSPを一度無効にするか、
  • または信頼できるソースを永続的にホワイトリストに登録します。


@Rudie Chrome Mobileでも機能しますか?
マイケル14

@Michael Chrome Mobileがモダンな拡張機能をサポートしている場合。WeRequestは新しいものです。私はChrome Mobileを使用していないので、わかりません。
ルディ14

回答:


2

Chromeアプリが推奨する方法

テンプレートライブラリを使用する

プリコンパイルされたテンプレートを提供するライブラリを使用すれば、準備は完了です。プリコンパイルを提供しないライブラリを引き続き使用できますが、一部の作業が必要になり、制限があります。

サンドボックスを使用して、「評価」したいコンテンツを分離する必要があります。サンドボックス化は、指定したコンテンツのCSPを解除します。

サンドボックスローカルコンテンツ

サンドボックス化により、指定されたページをサンドボックス化された一意のオリジンで提供できます。これらのページは、コンテンツセキュリティポリシーから免除されます。サンドボックスページでは、iframe、インラインスクリプト、eval()を使用できます(最後の2つは防止されています)。それは「unsafe-inline」と「unsafe-eval」を修正します。

  • サンドボックスでインラインスクリプトを使用する
  • マニフェストにサンドボックスを含める

リモートリソースにアクセスする

XMLHttpRequestを介してリモートリソースを取得し、それらをblob:、data :、またはfilesystem:URLを介して提供できます。これにより、jQueryフェッチの問題が修正されます。

マニフェスト要件

クロスオリジンを行うにXMLHttpRequestsは、リモートURLのホストへの許可を追加する必要があります。

クロスオリジン XMLHttpRequest

リモートURLをアプリに取得し、そのコンテンツをblob:URL として提供します。


これらのいずれもできるとは思いません。コードunsafe-evalunsafe-inline応答ヘッダーを修正するには、スクリプトの所有者のみがコードを修正できます。パブリックドメインにある場合は修正できます。これはすべて、おそらく1回限りの修正です。


ハック

UnsafeWindow

http://wiki.greasespot.net/UnsafeWindow

コンテンツスクリプトインジェクション

http://wiki.greasespot.net/Content_Script_Injection


ただし、ハッキングには少なくとも最初のセキュリティホールを引き起こすことがわかっているため、欠点があります。


0

これらの設定は[コンテンツ]タブで編集できます。このタブにchrome://settings/contentは、アドレスバーに入力して直接アクセスできます。特定のコンテンツタイプで特定のドメインをホワイトリストに登録できます。


8
コンテンツ設定のどこでこれを行うのですか?サイトを「Cookieおよびサイトデータの例外」に追加しようとしても効果がありません。他の設定はどれも関連していないようです。
マイケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.