2000P's Blog

最初のページ

コンテンツセキュリティポリシー

著者 pinger 時間 2020-04-11
all

注意:本明細書の最終更新は1090日前になります。ここで説明した情報は変更されたかもしれません。慎重に使用してください。

本稿で紹介するのはW 3 CのConttent Security Policyで、CSPと略称する。この仕様は内容の安全に関連しています。主にページにどのようなリソースがロードされ、XSSの発生を減少させるかを定義します。

Chrome拡張は既にCSPを導入しており、manifest.jsonのcontent(usecurityuplolicy)フィールドで定義されています。いくつかの近代的なブラウザも応答ヘッダによってCSPを定義することをサポートしています。次に、応答ヘッダによってCSPを使用する方法を紹介します。Chrome拡張におけるCSPの使用はChrome公式文書を参照することができます。

content_security_policy

ブラウザの互換性

初期のChromeはX-WebKit-CSP応答ヘッダを通じてCSPをサポートしていましたが、firefoxとIEはX-Connect-Security-Paolicyをサポートしています。Chrome 25とFirefox 23は標準のConteet-Security-Paolicyをサポートしています。

X-WebKit-CSP X-Content-Security-Policy Content-Security-Policy

完全ブラウザCSPサポート状況はCanIUseに移行してください。

どう使いますか

CSPを使うには、サーバーからこのようなレスポンスを出力するだけでいいです。

Content-Security-Policy: default-src 'self'

default-srcはCSPコマンドで、複数のコマンドの間は英語でセミコロンで分割されます。'self'はコマンド値で、複数のコマンド値は英語でスペースで分割されます。現在、これらのCSP指令があります。

default-src 'self' Content-Security-Policy-Report-Only

命令値は、以下のような内容から構成されてもよい。

data:

上の紹介から、CSPプロトコルがコントロールできる内容が非常に多いことが分かります。また、「unsafe-inline」を特別に指定しないと、ページ上のすべてのinlineスタイルとスクリプトは実行されません。「unsafe-eval」を特別に指定しないと、ページ上ではnew Function、setTimeout、evalなどの方式で動的コードが実行されません。ページの資源源を制限した後、XSSにされるリスクは確かに少ないです。

'unsafe-inline' 'unsafe-eval'

もちろん、CSPだけでXSSを防ぐには十分ではありません。すべてのブラウザをサポートしないのはハードです。しかし、安い開発コストに加えて、悪くはないです。影響が大きすぎると心配されても、以下のように不適合なログだけを収集して、まず観察してください。

Content-Security-Policy-Report-Only: script-src 'self'; report-uri http://test/

このように、もしページにinline JSがあるならば、依然として実行して、ブラウザだけは指定の住所にPOST要求を送信して、このような情報を含みます。

{"csp-report":{"document-uri":"http://test/test.php","referrer":"","violated-directive":"script-src 'self'","original-policy":"script-src 'self'; report-uri http://test/","blocked-uri":""}}

CSPはまずここに紹介します。現代のブラウザでは安全に関する応答ヘッドが多くサポートされています。後で紹介します。もう書き終わりました。ここを注文して引き続き読んでください。

本論文のリンク:https://imquo.com/post/content security-policy-reference.は、コメント付きです。

--EOF--

2011-07-22 18:40:39に発表され、「XSS、Header、CSP」のラベルが追加され、最終的に2017-02-21 17:20:32に修正されました。本文Markdownバージョンを見ます。

本サイトでは「署名4.0国際」を使って共有協議を作成し、関連説明」を参照してください。

注意:本明細書の最終更新は1090日前になります。ここで説明した情報は変更されたかもしれません。慎重に使用してください。

テーマ「HTTP関連」の他の文章」