Q. CSP(Content Security Policy)を設定したらサイトが表示されなくなりました
A. CSP の設定が厳格すぎて、正規のスクリプトやスタイルシートがブロックされている状態です。
応急処置
まず、サイトの表示を復旧させましょう。
- SentinelSecurity → セキュリティヘッダー設定 にアクセスします(管理画面は CSP の影響を受けません)
- CSP の設定を 無効 にするか、Report-Only(学習) モードに変更します
- 保存 をクリックします
- サイトのフロントエンドが正常に表示されることを確認します
/wp-content/plugins/sentinel-security フォルダ名を変更してプラグインを無効化してください。
正しい CSP の導入手順
CSP は段階的に導入することが重要です。
ステップ 1: スマートスキャン
スマートスキャン 機能を使って、サイトで使用されているリソース(スクリプト、スタイルシート、画像、フォントなど)のオリジンを自動的にスキャンします。これにより、許可すべきドメインが一覧表示されます。
ステップ 2: Report-Only モードで学習
CSP モードを Report-Only(学習) に設定し、1〜2週間運用します。このモードでは実際にはリソースがブロックされず、ポリシーに違反するリソースがレポートとして記録されるだけです。
ステップ 3: 違反ログの確認
CSP違反ログ を確認し、正規のリソース(自サイトのスクリプト、Google Analytics、CDN のフォントなど)をポリシーに追加します。
ステップ 4: Enforce モードに切り替え
違反が十分に減少したら、Enforce(適用) モードに切り替えます。
実際によくあるケース(.htaccess 本番モード)
症状
.htaccessを 本番モード にしている- 学習モード終了後 に、実運用で必要なドメインを CSP に反映していない
- 結果として
Content-Security-Policyに許可が不足し、JS/CSS/API がブロックされる
なぜ起きるのか
学習モード中は、違反を収集するために Content-Security-Policy-Report-Only が使われます。
終了後は通常の Content-Security-Policy へ移行しますが、収集した違反ログを取り込んで許可ドメインを更新していない と、必要なリソースが遮断されます。
解決手順(最短)
- セキュリティヘッダー設定 で一度 学習モード に戻す
- 実際の利用画面(トップ、問い合わせ、会員、決済など)を操作して違反を再収集する
- CSP違反ログ を確認し、必要なドメインを
script-src/style-src/connect-srcなどへ反映する - 設定を保存して
.htaccessを再生成する - Enforce に戻し、ブラウザの開発者ツールでブロックが消えたことを確認する
補足
.htaccessが書き込み不可だと反映できません- CDN、解析タグ、外部APIを使うページは特に漏れやすいため、必ず実画面で確認してください
よくある原因
| ブロックされるリソース | 対処 |
|---|---|
| Google Fonts | font-src に https://fonts.googleapis.com https://fonts.gstatic.com を追加 |
| Google Analytics | script-src と connect-src に https://www.googletagmanager.com を追加 |
| インラインスクリプト | script-src に 'unsafe-inline' を追加(非推奨だが必要な場合) |
| CDN のスタイル | style-src に CDN のドメインを追加 |