UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Web セキュリティ】セキュリティを強化するHTTPヘッダーたち

Webセキュリティを強化するためのHTTPヘッダーについて調べた

referrer policy

httpヘッダーでリファラー情報をリクエストにどれだけ含めるかを制御する

Referrer-Policy - HTTP | MDN

サイトによってはリファラによって流入元の情報が必要以上に遷移先に知られることになるため、このヘッダーを設定しこれを防ぐ

web.dev

構文は以下

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)

サイトで読み込んでいる外部ソースを、信頼する外部ソースからのコンテンツのみを許可するようにすることができる

developer.mozilla.org

構文は以下

Cross-Origin-Embedder-Policy: require-corp

これを付与した場合は、同じオリジンからリソースをロードするか、別のオリジンからロード可能として明示的にマークされたリソースのみをロードすることができる

また、SharedArrayBufferなどのAPIの利用する際には必須の設定である

uga-box.hatenablog.com

permissions policy

ブラウザのカメラや位置情報の取得といったブラウザ機能の使用を制御する

developer.mozilla.org

構文は以下

Permissions-Policy: <directive> <allowlist>

例えば次の指定をした場合、位置情報は同一オリジンとfoo.comからのドキュメントのみで使用でき、カメラへのアクセスはこのドキュメントを含むすべてのドキュメントで無効になっており、全画面表示モードは任意のフレームに許可される

Permissions-Policy:
    geolocation=(self "https://foo.com"),
    camera=(),
    fullscreen=*

webappsec-permissions-policy/permissions-policy-explainer.md at main · w3c/webappsec-permissions-policy · GitHubより

content security policy(CSP)

XSSやデータインジェクション攻撃のような、特定の種類の攻撃を検知し、影響を軽減・報告するための設定

developer.mozilla.org

構文は以下

Content-Security-Policy: policy

例えば、サイト管理者が、信頼されたドメインとそのすべてのサブドメインからのコンテンツを許可したい場合は以下のようにする

Content-Security-Policy: default-src 'self' example.com *.example.com