7

Chrome 拡張機能のバックグラウンド ページで Firebase を使用しようとしていますが、インライン スクリプトを実行しているように見えますが、これはセキュリティ上の理由から許可されていません。

現在、CSP を次のように設定しています。

{"content_security_policy": 
  "script-src 'self' https://cdn.firebase.com https://<my-subdomain>.firebaseio.com; object-src 'self'"}

最初の Firebase スクリプトを読み込むことはできますが、新しい Firebase('my-firebase-url') を呼び出すと、次のエラーが発生します。

次のコンテンツ セキュリティ ポリシー ディレクティブに違反しているため、インライン スクリプトの実行を拒否しました: "。Uncaught ReferenceError: pRTLPCB が定義されていません

Firebase チーム (または誰か) が提供できる回避策やアドバイスはありますか?また、スクリプトがインラインで実行される理由についての説明はありますか?

4

3 に答える 3

13

質問がされた時点で、Firebase が Chrome 拡張機能で動作しないバグがありましたが、現在は修正されています。

正しい CSP は次のとおりです。

"content_security_policy": "script-src 'self' https://cdn.firebase.com https://*.firebaseio.com; object-src 'self'"

(Firebase は内部で他のサブドメインに接続する可能性があるため、ドメインのワイルドカードは重要であることに注意してください。)

Firebase を使用した Chrome 拡張機能のサンプルについては、https ://github.com/firebase/firebase-chrome-extension を参照してください。

于 2012-12-23T04:19:02.000 に答える
3

同様の問題があります。ほら、Firebaseのコンストラクターは、スクリプトを実行するためにdom操作を実行するようです(あいまいですが、私は知っています)。これは、Chrome CSPをトリガーします。

Sandbox Pagesを介してコンストラクターをラップしようとしましたが、成功しませんでした (マニフェストにすべてのアクセス許可があるにもかかわらず、DOM ERR 18 が発生します)。バックグラウンド ページまたはページ アクション/ブラウザ アクションのポップアップ ページで実行しようとすると、同じことが起こります。

別?Firebase をコンテンツ スクリプトとして挿入し (マニフェストから実行)、メッセージ パッシングを介してコールバックを Chrome.extension.sendMessage として送信できます。私は今まさにこれを行っているので、これまでのところ、少なくとも Firebase コンストラクターは機能します。

解決?James Tampling がこれを読み、Firebase チームにこの後を調べるよう促します :)

更新: Firebase.js をコンテンツ スクリプトとして挿入しても機能しませんが、良いニュースとして、Firebase チーム (Andrew Lee に連絡) がそれをチェックしています。

UPDATE 2 Firebase チームがこれを修正し、ポップアップ ページ (ブラウザ ポップアップまたはページ アクションの両方) から機能するようになりました。manifest.json に次の CSP を追加する必要がありますが、"content_security_policy": "script-src 'self' 'unsafe-eval' https://cdn.firebase.com https://*.firebaseio.com https://*.firebaseio.com; object-src 'self'; "その後は驚くほど機能します。

于 2012-12-22T23:41:56.577 に答える
1

私はコルドバjsアプリを持っていますが、以下のものだけが機能しました:

<meta http-equiv="Content-Security-Policy" content="

  default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval';
  script-src  'self' https://www.gstatic.com https://cdn.firebase.com https://*.firebaseio.com; object-src 'self';

  " />

お役に立てれば。

于 2019-03-10T07:32:01.193 に答える