主な項目と役割
| 項目 | 主な目的 | 注意点 |
|---|---|---|
| Content-Security-Policy | 読み込む資源や実行条件を制御 | インラインJS・外部連携の確認 |
| Strict-Transport-Security | HTTPS接続をブラウザーに要求 | サブドメイン・解除までの影響 |
| X-Content-Type-Options | MIME型の推測を抑止 | 正しいContent-Typeが必要 |
| Referrer-Policy | 送信する参照元情報を制御 | 計測・連携への影響 |
| frame-ancestors | 埋め込み元を制限 | 正規の埋め込み利用を確認 |
まず実際のレスポンスを調べる
トップだけでなく記事、フォーム、静的ファイル、エラーページを確認します。テーマ、サーバー、CDNが重複設定している場合もあり、CSPが複数あると単に後勝ちになるとは限りません。設定元を一つずつ特定します。
CSPは検証しながら適用する
外部フォント、解析、Turnstile、埋め込み動画などを棚卸しします。Report-Onlyを利用できる場合は違反を確認してから強制適用します。広い許可を足し続けるのではなく、必要な通信と実行方法を確認します。
HSTSはホスト全体で判断する
同一ホストの別サイトやHTTPでしか使えない経路がないか確認します。includeSubDomainsやpreloadは影響が広いため、テーマの一ページの都合だけで設定しません。採点結果は改善の参考にし、脆弱性診断の代わりにはしないでください。
評価サービスの点数を使うとき
サービスが調べたURLと応答だけが対象です。ログイン後画面、別ホスト、API、静的ファイルへ同じ設定が適用されるとは限りません。点数が変わった場合は項目ごとの差を調べ、設定内容と実際のブラウザー動作を確認します。
フォームや解析が動かなくなった場合
変更前後のヘッダーを控え、ブラウザーのコンソールと通信結果で拒否された資源を確認します。CSPの許可先や実行方式を必要最小限で修正し、Turnstile、解析、フォント、埋め込みなどの業務上必要な機能を試します。
よくある質問
推奨されるヘッダーを全て追加すべきですか?
目的と既存構成に合わせて判断します。古い・不要な項目や、広範囲へ影響する項目もあります。設定例をそのまま貼らず、各値の意味と解除方法を確認します。
テーマで設定すれば全応答へ適用されますか?
WordPressを経由しない静的配信やエラー応答には適用されない場合があります。CDN・Webサーバーを含め、実際にどの層が応答するかを確認します。