問題

2017-11-09 32 views
0

私は次のメタヘッダーを持って安全なウェブサイトのアクセシビリティソリューションを実装していますインデックスページ上のXSSメタタグの存在は、いつでもスクリプトをロードするとき:問題

<meta http-equiv="Content-Security-Policy" content="default-src *; child-src 'none'; object-src 'none';img-src 'self' data:;style-src 'self' 'unsafe-inline'"> 

も責任があるスクリプトタグがあります(JavaScriptで書かれた)私のソリューションコードの注入のために、それは、以下の機能が含まれています

fix.ReadXml = function() { 

$.getScript(this.path, function() { 

    // Some callback code... 
}); }; 

パスは私が保証できることを、正しく設定されています。これはスクリプト実行ロジックの最初のAjax呼び出しであり、呼び出されているスクリプトファイルがロードされますが、コールバック関数はトリガーされず、実行チェーンがクロークコンソールにエラーコードはありません。

開発者がXSSメタタグを削除すると、スクリプトの実行が正しく進み、ソリューションが正常に読み込まれます。 だから、なぜこれが起こるのか説明してください。残念ながら、メタタグはウェブサイトのセキュリティポリシーの一部であり、削除することはできません。メタタグが存在するときにコールバックをトリガするためにコードに追加する必要があるものはありますか?

ありがとうございます。

答えて

0

Content-security-policyがロードされると、インラインscirptおよびいくつかのjavascript機能が無効になります。ブラウザのデベロッパーコンソールは、問題の原因を教えてくれます。私の推測では、外部ドメインからスクリプトをロードしている(現在のメタポリシーは同じドメインのみを許可している)か、getscriptは内部的にevalを使用しています(CSPはevalを無効にします)。簡単な修正はありません。ポリシーを変更する(ヘッダーでオーバーライドする)か、別の方法で処理する必要があります。