2026年7月1日
2026年7月1日
WordPressのContent Security Policy(CSP)を設定する方法
はじめに
Content Security Policy(CSP)は、Webサイトが悪意のあるスクリプトを実行されることを防ぐために使用されるセキュリティ対策の一種です。WordPressの管理画面やテーマ、プラグインを通じて設定することで、サイトの安全性を大幅に向上させることができます。
症状・背景
この記事が必要になる主な場面:
- <サイトへの攻撃(クロスサイトスクリプト(Cross-Site Scripting: XSS))対策として>
- <管理画面でのセキュリティ強化>
- <特定のコンテンツが安全にロードされることを保証したい場合>
- <最新のセキュリティベストプラクティスを適用したい場合>
手順・設定方法
ステップ1: WordPressテーマまたはプラグインを通じてCSPヘッダーを追加
# テーマのfunctions.phpに以下のコードを追加
function add_custom_csp_header() {
header("Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self'; img-src 'self' data:;");
}
add_action('wp_head', 'add_custom_csp_header');
ステップ2: CSPヘッダーをカスタマイズする
# 設定の詳細な調整を行う
function add_custom_csp_header() {
header("Content-Security-Policy:
default-src 'self';
script-src 'self' https://example.com;
style-src 'self' https://cdn.example.com;
img-src 'self' data:;
font-src 'self';");
}
add_action('wp_head', 'add_custom_csp_header');
ステップ3: CSPレポート用の設定を追加
# CSPレポートを有効化し、違反時の通知先を指定する
function add_custom_csp_header() {
header("Content-Security-Policy:
default-src 'self';
script-src 'self' https://example.com;
style-src 'self' https://cdn.example.com;
img-src 'self' data:;
font-src 'self'; report-uri /path/to/report-endpoint;");
}
add_action('wp_head', 'add_custom_csp_header');
ステップ4: CSPのトラブルシュートと監視
# ブラウザの開発者ツールやサーバーログを確認し、CSP違反を調査する
function check_for_csp_violations() {
// CSPレポートエンドポイントからデータを取得し解析
}
add_action('wp_footer', 'check_for_csp_violations');
注意事項
- <実践的な注意点1>: すべてのサードパーティーリソース(CDN、画像ホスティングなど)がCSPに含まれていることを確認してください。
- <実践的な注意点2>: CSPはサイト全体に対して一貫性を保つことが重要です。特定のページやセクションだけを無視しないようにしましょう。
- <セキュリティ上の注意>: 安全なリソースのみが許可されるように設定を適切に調整してください。
- <パフォーマンス/運用上の注意>: CSPが厳密すぎる場合、サイトの機能性やユーザー体験に悪影響を与える可能性があります。
まとめ
1. <キー1>: Content Security Policyは、攻撃者によるスクリプト実行を防止する効果的なセキュリティ対策です。
2. <キー2>: WordPressでは、functions.phpファイルにCSPヘッダーの定義コードを追加することで簡単に設定が可能です。
3. <キー3>: CSP違反レポートを有効化し、サイトの安全性を継続的に監視することが推奨されます。
4. <キー4>: 安全なリソースのみを許可するようCSPヘッダーを設定することでセキュリティリスクを最小限に抑えられます。
5. <キー5>: CSPは既存のセキュリティ対策と組み合わせることで、より強固な防御システムを構築できます。
関連記事: