web-dev-qa-db-ja.com

コンテンツセキュリティポリシーオブジェクトsrc blob

Content-security-policyを使用して、Chrome 41(ベータ)で window.URL.createObjectURL のプロセスを実行しようとすると、次のようなエラーが表示されます:

次のコンテンツセキュリティポリシーディレクティブに違反するため、「blob:http%3A // localhost%3A7000/f59612b8-c760-43a4-98cd-fe2a44648393」からプラグインデータをロードすることを拒否しました: "object-src blob:// *"

object-srcまたはdefault-srcを制限するコンテンツセキュリティポリシーを使用すると、次のように(便宜上jQueryを使用して)問題を再現できます。

blob = new Blob(
   ["%PDF-1.\ntrailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>"],
   { type: "application/pdf" })
$("<embed>").attr("src", window.URL.createObjectURL(blob))
  .appendTo(document.body)

data://*の場合と同様、 これが機能するはずの仕様 のようです。 blobblob:blob:*blob:http*blob:http:*blob:http://*も試してみましたが、役に立ちませんでした。

動作しますが、明らかな理由で望ましくないのはobject-src *です。

コンテンツセキュリティポリシーをBLOBに読み込むことに成功した人はいますか?これはアップストリームの問題ですか、それとも何かを見落としていませんか?

28
Brian M. Hunt

仕様に準拠した答えはobject-src 'self' blob:です

blob:は、blob:または'self'ではなく、*と明示的にのみ一致する必要があります。これは Chrome のバグであり、最近 Firefox 40で修正されました。

42
Adria

Chrome 47.0.2526.73:

default-src * blob :;

私のために働いた

7
grigno