BlueprintLab Guide

全部HTTPヘッダーなのに、HSTS・CSP・CORS・Cache-Controlは仕事がまるで違います

設定ファイルでは同じように1行ずつ並ぶので混ざりがちですが、守っているものも、間違えたときに起きることも別です。

HSTSは「次からHTTPで来ないで」とブラウザに覚えてもらう設定です

Strict-Transport-Security は、対応ブラウザにHTTPS利用を記憶させます。一度有効になると、次回からHTTPへ寄り道せずHTTPSで接続する方向になります。

便利ですが、includeSubDomains や preload は影響範囲が広い設定です。HTTPSが全体で安定してから強くする、くらいの順番が安全です。

CSPは「このページ、どこからスクリプトを読んでいい?」を決めます

Content-Security-Policy はscript、style、image、frameなどの読み込み元を制限します。外部スクリプトの読み込み範囲を絞れる一方、厳しくしすぎると自分の正規機能まで止まります。

「とりあえず強い設定を貼る」のではなく、今のサイトがどこから何を読んでいるかを見てから組むヘッダーです。

CORSは認証ではありません

ブラウザから別オリジンのAPIへアクセスするとき、どのOrigin・Method・Headerを許可するかを応答側が伝えるのがCORSです。

Access-Control-Allow-Origin: * を付けたからAPIが安全になった、という意味ではありません。誰が何を実行してよいかを決める認証・認可とは別物です。ここは名前から誤解されやすいところです。

Cache-Controlだけは、主役が「保存と再利用」です

Cache-Control は、ブラウザや共有キャッシュに「保存してよいか」「何秒使ってよいか」「再検証するか」を伝えます。

HSTSやCSPと同じレスポンスヘッダーに並びますが、目的は主にキャッシュ挙動。4つをまとめて“セキュリティヘッダー”として暗記するより、HTTPS・読み込み元・別オリジン・キャッシュ、と役割で分けた方が設定ミスを見つけやすくなります。

関連するツール

関連する分野

参考情報