コンテンツセキュリティポリシー:ページの設定により、リソースの読み込みがブロックされました


104

ページの読み込み時にCAPTCHAを使用していますが、セキュリティ上の理由でブロックされています。

私はこの問題に直面しています:

    コンテンツセキュリティポリシー:ページの設定により読み込みがブロックされました
    でのリソースの
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ( "script-src http://test.com:8080'unsafe-inline''unsafe-eval '")。

次のJavaScriptとメタタグを使用しました。

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>

もし私があなたなら、javascriptではなくサーバーサイドコードでやってみようと思います。JSは、CORSなどにはあまり適していません。Googleはそのためのオプション..持っています
ゴーゴリ

javascriptこの質問はjQueryとは関係がないため、この質問にタグを追加しました。JavaScriptに影響します。実際、jQueryタグを完全に削除すると、この質問の方が便利ですが、それを行うのは私の場所ではありません。
マンゴ

2
削除された答えは正しいです。「コンテンツセキュリティポリシー:ページの設定がリソースの読み込みをブロックした」理由の1つは、ブラウザでJavaScriptが有効になっていないか(NoScriptなどによって)ブロックされている場合です。その場合、エラー出力の一部は「不明なディレクティブ 'noscript-marker'を処理できませんでした」である可能性があります。
PeterMortensen20年

about:configを使用する他の提案についてコメントすることはできないので、ここに追加すると思います。about:configにアクセスし、security.csp.enableをfalseに設定することを推奨する人がいます。他の誰もがこれは恐ろしい考えだと言いました。これが私も使用することにしたソリューションであると言いたいだけです。非常に多くのサイトがFirefoxで完全に機能しなくなったばかりで、これらのエラーがいたるところにあります。Chromeはまだそれらをロードします。それがなぜであるかについて詳しく知ることなく、security.csp.enableをfalseに設定すると、Firefoxを使用してそれらのサイトを再度ロードできるようになりました。もし
ELIT

回答:


85

スクリプトは自分のサイト(自分自身)からしかロードできないとおっしゃいました。次に、別のサイト(www.google.com)からスクリプトを読み込もうとしましたが、これを制限しているため、できません。これがコンテンツセキュリティポリシー(CSP)の要点です。

最初の行を次のように変更できます。

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">

または、代わりに、CSPについて詳しく知るまで、その行を完全に削除する価値があるかもしれません。あなたの現在のCSPはかなりとにかく緩い(可能であるunsafe-inlineunsafe-evaldefault-src*)ので、おそらく、正直に言うと、あまりにも多くの価値を付加されていません。


5
これは安全でない回避策です-GoogleのCSPチェッカーはこの行に複数の重大な障害を与えます。(残念ながら、優れたCSPの実装は簡単ではなく、サイトごとにカスタマイズする必要があります。)
Freewalker 2018年

8
私はこのコメントに問題を抱えています。CSPの問題は、元のCSPが原因です。この答えは、それを受け取り、質問への回答としてwww.google.comドメインをこれに追加することだけでした。同時に、CSPをさらに強化することを提案できますか?可能性はありますが、それは質問の範囲外だと思います。特に、OPがCSPに精通していないことはすでに明らかでした。
バリーポラード

3
CSPは「安全ではない」のでしょうか。それは議論の余地があります。unsafe-inlineとunsafe-eval、およびデフォルトのソース*を許可すると、CSPの目的の多くが無効になります(したがって、これを削除することを提案した理由)が、CSPはブラウザーの制御を緩めることできないため、このポリシーの喪失でさえGoogleスクリプトをブロックしているという事実からも明らかなように、CSPのないページに対する制御を追加します。したがって、「安全でない」という用語はおそらく素晴らしい用語ではありません。「怠惰すぎて価値がない」というのは、おそらくそれを表現するためのより良い方法です。そうです、このCSPにはまだまだ多くの要望がありますが、Googleを追加することは「安全でない回避策」ではありません。
バリーポラード

3
あらゆるCSP(「すべてが問題ない」以外)は一般的に何もないよりも優れているという公正な点
Freewalker 2018年

それに伴う問題のほんの少しがあり、私はからそのエラーを取得していますchrome://global/content/elements/panel.jsすべてのページのデバッグを無効にします(Firefoxの)
AAA

14

私とASP.NETコア角度のプロジェクトは、Visual Studio 2019で実行して、時々私は、Firefoxのコンソールで、このエラーメッセージが表示されます。

コンテンツセキュリティポリシー:ページの設定により、インラインでのリソースの読み込みがブロックされました(「default-src」)。

Chromeでは、代わりにエラーメッセージは次のとおりです。

リソースの読み込みに失敗しました:サーバーはステータス404()で応答しました

私の場合、それは私のコンテンツセキュリティポリシーとは何の関係もありませんでしたが、代わりに私の側のTypeScriptエラーの結果でした。

次のようなTypeScriptエラーがないかIDE出力ウィンドウを確認してください。

> ERROR in src/app/shared/models/person.model.ts(8,20): error TS2304: Cannot find name 'bool'.
>
> i 「wdm」: Failed to compile.

注:この質問は、このエラーメッセージに対するGoogleでの最初の結果であるためです。


11

同様のエラータイプがありました。まず、コードにメタタグを追加しようとしましたが、機能しませんでした。

nginx Webサーバーで、外部コードの実行をブロックする可能性のあるセキュリティ設定がある可能性があることがわかりました。

# Security directives
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'  https://ajax.googleapis.com  https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com  https://themes.googleusercontent.com; frame-src https://player.vimeo.com https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

Content-Security-Policyを確認してください。ソース参照を追加する必要がある場合があります。


4
これは安全ではないことに注意してください。このContent-SecurityPolicyは、GoogleのCSPEvaluatorから重大度の高いエラーを受け取ります。
フリーウォーカー2018年

1

私はこのヘッダーですべての必要なサイトを許可することができました:

header("Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' stackexchange.com");                    

0

私が使用していたAngularのバージョン(v8-> v9から)とTypeScriptのバージョン(3.5.3->最新)の両方をアップグレードすることでこれを回避しました。


1
説明は何ですか?
PeterMortensen20年

-7

ブラウザで無効にすることができます。

Firefox

about:configFirefoxのアドレスバーに入力し、検索security.csp.enableしてに設定しfalseます。

クロム

Disable Content-Security-PolicyCSPを無効にするために呼び出される拡張機能をインストールできます。


82
一時的なデバッグを除いて、これを絶対に行わないでください。これは、ブラウザの重要なセキュリティ機能です。
ハッケル2018

4
これはローカルでのみ修正され、さらにブラウザの脆弱性が大幅に高まります。
Neil Chowdhury 2018

3
これはテスト/デバッグのための「アドバイス」ですか?もしそうなら、それは人々の知らないコミュニティ全体に危険な脆弱性を広めることを避けるために答えで言及されるべきです。ちなみに、@ NeilChowdhuryが言ったように、これはあなたのシステムでそれを修正します、実際のウェブサイトの訪問者はどうですか?
Fr0zenFyr

13
一時的な解決策ですが、デバッグに役立ちます(プラス1)
NarendraR 2018年

5
@hackel私はこれをします。します。
アレックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.