Webセキュリティを強化するためのHTTPヘッダーについて調べた
referrer policy
httpヘッダーでリファラー情報をリクエストにどれだけ含めるかを制御する
サイトによってはリファラによって流入元の情報が必要以上に遷移先に知られることになるため、このヘッダーを設定しこれを防ぐ
構文は以下
Referrer-Policy: no-referrer Referrer-Policy: no-referrer-when-downgrade Referrer-Policy: origin Referrer-Policy: origin-when-cross-origin Referrer-Policy: same-origin Referrer-Policy: strict-origin Referrer-Policy: strict-origin-when-cross-origin Referrer-Policy: unsafe-url
ブラウザによってデフォルト値が違うので、行いたい制御に合わせて設定しておくのがよさそう
cross origin embedder policy(COEP)
サイトで読み込んでいる外部ソースを、信頼する外部ソースからのコンテンツのみを許可するようにすることができる
構文は以下
Cross-Origin-Embedder-Policy: require-corp
これを付与した場合は、同じオリジンからリソースをロードするか、別のオリジンからロード可能として明示的にマークされたリソースのみをロードすることができる
また、SharedArrayBuffer
などのAPIの利用する際には必須の設定である
permissions policy
ブラウザのカメラや位置情報の取得といったブラウザ機能の使用を制御する
構文は以下
Permissions-Policy: <directive> <allowlist>
例えば次の指定をした場合、位置情報は同一オリジンとfoo.com
からのドキュメントのみで使用でき、カメラへのアクセスはこのドキュメントを含むすべてのドキュメントで無効になっており、全画面表示モードは任意のフレームに許可される
Permissions-Policy: geolocation=(self "https://foo.com"), camera=(), fullscreen=*
content security policy(CSP)
XSSやデータインジェクション攻撃のような、特定の種類の攻撃を検知し、影響を軽減・報告するための設定
構文は以下
Content-Security-Policy: policy
例えば、サイト管理者が、信頼されたドメインとそのすべてのサブドメインからのコンテンツを許可したい場合は以下のようにする
Content-Security-Policy: default-src 'self' example.com *.example.com