26

コンテンツ セキュリティ ポリシーのホワイトリストに 2 つのドメインを含める必要がある chrome 拡張機能を作成しています。公式ドキュメントを見ましたが、まだ適切な構文を理解できないようです。

以下は機能していないようです。

"content_security_policy": "script-src 'self' https://foo.com https://example.com; object-src 'self'"

編集:

コンテンツ スクリプトとポップアップの両方が foo.com に到達できますが、どちらも example.com に到達できません。

Chrome 拡張機能は、CSP で複数のソースをホワイトリストに登録できますか?

4

2 に答える 2

24

CSP について私が知っていることから、これは構文的に正しいように見えます。CSPに関するHTML5 Rocks の記事は、次のように構文に同意します。

script-src https://host1.com https://host2.com両方のオリジンを有効として正しく指定します。

ただし、問題は次のいずれかである可能性があります。

  1. この CSPは、およびを含むすべてのサブドメインを許可しません。これらのサブドメインのホスト名を明示的に追加するか、 を使用してすべてのサブドメインを許可できます。www.foo.comwww.example.comhttps://*.foo.com

  2. スクリプト リクエストのいずれかが許可されていないドメインにリダイレクトされる場合、リクエストは失敗します。たとえば、https://example.com/foo.jsまたは(許可されていないオリジン) または (許可され301ていないサブドメイン) に302リダイレクトする場合、要求は仕様に従って失敗します。https://notpermitted.com/foo.jshttps://www.example.com/foo.js

    ユーザー エージェントが URI を取得するたびに (リダイレクトをたどる場合を含む)... URI が許可されたスクリプト ソースと一致しない場合、ユーザー エージェントは空の HTTP 400 応答を受信したかのように動作する必要があります...

編集:

念のために言っておきますが、はい、Chrome 拡張機能は複数の HTTPS オリジンをホワイトリストに登録できます。これをテストするための簡単な拡張機能を作成できます。

マニフェスト.json

{
    "name":"CSP Test",
    "version":"1.0",
    "manifest_version":2,
    "browser_action":{
        "default_popup":"csp_test.html"
    },
    "content_security_policy": "script-src 'self' https://www.iana.org https://ajax.googleapis.com; object-src 'self'"
}

csp_test.html

<script src="https://www.iana.org/_js/2013.1/jquery.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script src="csp_test.js"></script>

csp_test.js

alert(jQuery)
alert(jQuery.ui)

この拡張機能は、リモート ドメインから jQuery および jQuery UI を読み込みます。いずれかのオリジンを CSP から削除するundefinedと、ライブラリの 1 つがロードに失敗したことを示す " " アラートが表示されます。

于 2013-07-22T14:15:19.270 に答える