結論
Content-Security-Policy は Report-Only から始めます。強制モードで導入すると、想定していなかった読み込みが即座にブロックされ、原因の切り分けが難しい障害になります。
HSTS は、すべてのサブドメインがHTTPSで提供されていることを確認してから適用します。一度配信すると、ブラウザ側にしばらく記憶されるためです。
Insight
セキュリティヘッダーの失敗は、設定ミスよりも「いきなり強制した」ことによるものが多いです。まず観測し、影響範囲を確認してから強制します。
Content-Security-Policy は Report-Only から始めます。強制モードで導入すると、想定していなかった読み込みが即座にブロックされ、原因の切り分けが難しい障害になります。
HSTS は、すべてのサブドメインがHTTPSで提供されていることを確認してから適用します。一度配信すると、ブラウザ側にしばらく記憶されるためです。
影響範囲が小さく、確認が容易なものから入れます。
影響が小さく、先に入れて問題になることはほとんどありません。
外部への参照元送信を制限します。計測への影響を先に確認します。
使っていない機能を明示的に無効化します。
違反レポートを収集し、実際の読み込み元を洗い出します。
レポートが安定してから強制に切り替えます。
全サブドメインのHTTPS化を確認してから適用します。
ヘッダーはサイト単位ではなく経路単位で確認します。CDNやエッジの設定変更で、特定の経路だけヘッダーが欠落することがあります。
AiventX Web Lab では、ヘッダー検証をフェーズ2の対象としています。静的ホスティングだけでは任意のレスポンスヘッダーを再現できないため、エッジ側の実装と組み合わせます。
| 確認対象 | 見落としやすい経路 |
|---|---|
| HTMLページ | エラーページ(404/500) |
| 静的アセット | CDNキャッシュ経由の応答 |
| APIレスポンス | プリフライト(OPTIONS) |
| リダイレクト | 中間ホップのレスポンス |
フェーズ1の段階では、静的ホスティング上で構成しており、CSPを含むヘッダー群はまだ適用していません。適用状況は /security/ に記載しています。実態より進んだ状態を書かないようにしています。
状況セキュリティヘッダーの設定状況は、実際の配信設定が決まった段階で /security/ に反映します。
Explore next
最終更新: