セキュリティに関するヘッダを出力するPHPスクリプトの叩き台
※当サイトにはプロモーションが含まれています。
公開日:
更新日:

はじめに
セキュリティ関連のHTTPレスポンスヘッダを毎回調べて書くのが面倒なので、ここにまとめておくことにします。
PHPで何か書く時は レスポンスヘッダを出力するあたりに以下を書いておき、制限がキツいようだったら少しずつ緩めていくという使い方をイメージしています。
<?php
// セッションクッキーに httponly 属性を設定
ini_set('session.cookie_httponly', 1);
// セッションクッキーに secure 属性を設定
ini_set('session.cookie_secure', 1);
session_start();
// JavaScriptの実行を許可する対象を 同一オリジンと code.jquery.com と maxcdn.bootstrapcdn.com に制限する
header("Content-Security-Policy: default-src 'self';"
. " script-src 'self' code.jquery.com maxcdn.bootstrapcdn.com");
// XSS攻撃を検知させる(検知したら実行させない)。
header("X-XSS-Protection: 1; mode=block");
// IEにコンテンツの内容を解析させない(ファイルの内容からファイルの種類を決定させない)。
header("X-Content-Type-Options: nosniff");
// IEでダウンロードしたファイルを直接開かせない。
header("X-Download-Options: noopen");
// このページを iframe に埋め込ませない
header("X-Frame-Options: DENY");
if ($_SERVER['HTTPS'] != '') { // HTTPSアクセスの場合
// このサイトへのアクセスを HTTPS に制限する
header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
}
cf. HTTP response headers for security by PHP - Gist
各ヘッダに関する情報
Content-Security-Policy (CSP) (元々は X-Content-Security-Policy)
- Content Security Policy Level 2
- Content Security Policy 1.0
- Content Security Policy Reference & Examples
- ブラウザとそのバージョンによって指定するヘッダが違うことに注意する。
X-XSS-Protection (XSS Filter)
- IE8 Security Part IV: The XSS Filter - IEBlog - Site Home - MSDN Blogs
- IPA 独立行政法人 情報処理推進機構:情報セキュリティ技術動向調査(2011 年上期)
X-Content-Type-Options
X-Download-Options
X-Frame-Options
Strict-Transport-Security
まとまった情報
- OWASP Secure Headers Project
- List of useful HTTP headers - OWASP(リンク切れ)
- SEO - WEBページに設定しておくと良いHTTPヘッダとかメタタグとか - Qiita
- 今夜つける HTTPレスポンスヘッダー (セキュリティ編) - うさぎ文学日記
- 1分でわかる「X-ナントカ」HTTPレスポンスヘッダ - 葉っぱ日記
最終更新日: 2015-4-27