Security

CSP (Contents Security Policy) の記述例

投稿日:2015年4月18日 更新日:

記述例

  1. デフォルト設定の記述をする(HTTPレスポンスヘッダの出力)。
    • 同一オリジンも含めて全てのソース1からの読み込みを禁止する場合
      Content-Security-Policy: default-src 'none';
      
    • 同一オリジンを除く全てのソースからの読み込みを禁止する場合
      • default-src を使うと、child-src,
        connect-src, font-src, img-src, media-src, object-src, script-src, style-srcに対してまとめてポリシーを指定できる。詳しくは → http://www.w3.org/TR/CSP2/#directive-default-src を参照すること。
      Content-Security-Policy: default-src 'self';
      
  2. 必要であれば、各ソースに対する個別設定を後ろに追加して設定を上書きしていく(セミコロン区切り)。
    • 最初に全てのソースを禁止した上で、特定のソースの設定を上書きしていく場合
      • 以下では、script-src に対し「同一オリジン」「www.google-analytics.com」「platform.twitter.com」を追加し、更に「nonce-xxxxxx」も追加している。
      Content-Security-Policy: default-src 'none'; script-src 'self' www.google-analytics.com platform.twitter.com 'nonce-xxxxxx';
      
    • 最初に同一オリジンのみ許可した上で、特定のソースの設定を上書きしていく場合
      • 以下では、script-src に対し「同一オリジン」「www.google-analytics.com」「platform.twitter.com」を追加し、更に「nonce-xxxxxx」も追加している。
      Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com platform.twitter.com 'nonce-xxxxxx';
      
    • メモ
      • 最初に default-src で ‘self’ を指定しておき、あとから特定のソースの設定を上書きする場合、’self’ が必要なら、再度指定する必要がある。
      • 設定が間違っていればブラウザの開発者ツール(コンソール)にエラーが出力されるので、そのエラーメッセージを見ながら必要なホストを必要なディレクティブに追加していけばよい。
      • <script>タグ内に記述されたインラインのJavaScriptに対しては、nonce属性を追加していく。Firefoxはnonceに対応していないので、その場合(User-Agnetで判定して)は仕方ないが ‘unsafe-inline’ を指定する(これじゃダメ?)。

メモ

  • 上記の書き方で、Google Analytics や Twitter 等のボタンをウェブの画面に貼り付ける場合の設定を書くことができた。ただ、はてなブックマークのボタンはいろいろJavaScriptでやっているため対応するのが非常に面倒で途中でやめた。
  • 以下のページを参照しながら書けばよさそう。

その他のメモ

  • Firefox は nonce に対応していない(その後、対応したようだ)。
  • Data URL scheme を許可する場合は、例えば img-src 'self' data:; といった記述になる。
  • React では、タグに対して onClick={ ... } のような記述を行うが、あれは実際にはインラインな記述にはならないので問題ない。
  • HTMLのタグに対して style属性を直接書くのも禁止されるのは結構面倒だと思う。
  • script-src ‘self’ とした場合にどういう挙動になるか?
    • 外部のJavaScriptの読み込みは禁止
    • インラインの script は禁止
    • イベント属性は禁止
      • これは不便かもしれない。

参考


  1. 本記事において「ソース」というのは、script-src, style-src 等のことを指します。 
Web Security

CSP Level 3 で Strict CSP を利用する

2021.02.16
Web Security

CSP (Contents Security Policy) の記述例その2

2021.02.16

📂-Security
-

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

IPA の「CMSを用いたウェブサイト構築における情報セキュリティ対策 4つのポイント」の重要な部分を抜粋する

目次1. はじめに2. CMS を構築されたウェブサイトを狙う攻撃と対策2.1. 脆弱性やウェブサイトの運用上の不備を悪用2.1.1. ソフトウェアの脆弱性2.1.2. 運用上の不備2.2. 認証を突 …

セキュリティ

GnuPGでファイルを暗号化・復号する手順

USBメモリにデータを入れて持ち運ぶ場合、なんの対策もしていないと「USBメモリの紛失」がそのまま「データ流出」につながります。これを防ぐ1つ方法は、予めファイルを暗号化した状態で保存しておくことです …

no image

クロスサイト・スクリプティング対策 by IPA「安全なウェブサイトの作り方 第7版」

photo credit: XSS attack on YouTube via photopin (license) 安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構の、「クロスサイ …

no image

OWASPによる脆弱性対策に関するページ(www.owasp.org)を調べてみました

目次1. www.owasp.org について2. 関係してそうなカテゴリーページ3. 脆弱性別対策ページApplication ArchitectureCross-site Scripting (X …

Web Security

PHPのセキュリティ対策

PHP を安全に使うため、気を付けるべきポイントについて書いています。 目次1. ユーザーによる入力値の検証2. クロスサイトスクリプティング(XSS)対策1) HTML テキストの入力を許可しない場 …