ホームページ  >  記事  >  ウェブフロントエンド  >  HTML5 のコンテンツ セキュリティ ポリシー (CSP)

HTML5 のコンテンツ セキュリティ ポリシー (CSP)

一个新手
一个新手オリジナル
2017-10-07 11:40:002597ブラウズ

前書き:

Cordova不支持内联事件,所以点击事件必须提取到js里面.
以下是从官网摘抄下来,希望对您有所帮助

多くの潜在的なクロスサイト スクリプティングの問題を軽減するために、Chrome の拡張機能システムにはコンテンツ セキュリティ ポリシー (CSP) の一般的な概念が組み込まれています。 これにより、デフォルトで拡張機能の安全性が高まり、拡張機能やアプリケーションによってロードおよび実行できるコンテンツの種類を管理するルールを作成および強制できるようにする、いくつかのかなり厳格なポリシーが導入されています。

一般的に言えば、CSP は、拡張プログラムがロードまたは実行するリソースのハッキング/ホワイトリスト メカニズムとして機能します。 拡張機能に賢明なポリシーを定義することで、拡張機能が必要とするリソースを慎重に検討し、拡張機能がアクセスできるリソースがこれらのみであることをブラウザーに確認することができます。 これらのポリシーは、拡張機能によって要求されたホスト権限を超えたセキュリティを提供します。これらは追加の保護層であり、置き換えるものではありません。

ウェブでは、そのようなポリシーは HTTP ヘッダーまたは要素を通じて定義されます。 どちらも Chrome の拡張システムには適切なメカニズムではありません。 代わりに、拡張機能のポリシーは、次のように拡張機能の manifest.json ファイルによって定義されます:

{ 
   … 
   “content_security_policy”:“[POLICY STRING GOES HERE]” 
   …
}

CSP 構文の詳細については、コンテンツ セキュリティ ポリシーの仕様と、HTML5 Rocks の記事「コンテンツ セキュリティ ポリシーの概要」を参照してください。

デフォルトのポリシー制限

manifest_version パッケージが定義されていません デフォルトのコンテンツ セキュリティ ポリシーはありません。 マニフェスト バージョン 2 を選択したものには、デフォルトのコンテンツ セキュリティ ポリシーが適用されます:

script-src'self'; object-src'self'

このポリシーは、次の 3 つの方法で拡張機能とアプリケーションを制限することでセキュリティを強化します:

(1) 評価および関連機能は無効になります

次のコードは機能しません:

alert(eval("foo.bar.baz"));

window.setTimeout(“alert(’hi’)”,10); 
 window.setInterval(“alert(’hi’)”,10); 
 new Function(“return foo.bar.baz”);

このような JavaScript 文字列の評価 は、一般的な XSS 攻撃ベクトルです。 代わりに、次のようなコードを記述する必要があります:

alert(foo && foo.bar && foo.bar.baz); 
window.setTimeout(function(){alert(’hi’);},10); 
window.setInterval(function(){alert(’hi’);},10); 
function(){return foo && foo.bar && foo.bar.baz};

(2) インライン JavaScript は実行されません

インライン JavaScript は実行されません。 この制限により、インライン ブロックとインライン イベント ハンドラー プログラム (例: ) が禁止されます。

最初の制限は、悪意のあるサードパーティが提供するスクリプトを誤って実行することを防ぐことで、多数のクロスサイト スクリプティング攻撃を排除します。 ただし、コードの記述内容とコードの実行内容を明確に分離する必要があります (これは必ず行うべきです) ですよね? 例を挙げると、これがより明確になるかもしれません。 次の内容を含む単一の Popup.html としてブラウザー アクション ポップアップを作成してみるとよいでしょう:

<!doctype html> 
      My Awesome Popup! 
       function awesome(){ 
         //做某事真棒! 
       }
   function totalAwesome(){
     //做某事真棒!
   }
  函数clickHandler(element){
     setTimeout( “awesome();getherAwesome()” ,1000);
   }
   function main(){
     //初始化工作在这里。
   }
 </ SCRIPT>

すばらしい点をクリックしてください!


デフォルトポリシーの緩和

(1) インラインスクリプト

Chrome 45 までは、インライン JavaScript の実行に関する制限を緩和するメカニズムはありませんでした。 特に、「unsafe-inline」を含むスクリプト ポリシーを設定しても効果はありません。

Chrome 46 以降では、ポリシーでソース コードの Base64 エンコードされたハッシュを指定することで、インライン スクリプトをホワイトリストに登録できるようになりました。 ハッシュには、使用するハッシュ アルゴリズム (sha256、sha384、または sha512) をプレフィックスとして付ける必要があります。

例について

以上がHTML5 のコンテンツ セキュリティ ポリシー (CSP)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。