-
Notifications
You must be signed in to change notification settings - Fork 0
MS_SecurityHTTPHeaders
-
TOP > インフラストラクチャ > HTTPヘッダ
- セキュリティ強化のHTTPヘッダ
- Cookie
- キャッシュ・コントロールのHTTPヘッダ
- CORS (Cross-Origin Resource Sharing)
- 昨今、セキュリティ強化の HTTP ヘッダが実装されている。
- ブラウザ側は、これを見てよりセキュアになるよう挙動を変更する
(一部、metaタグでページのマークアップに直接ポリシーを設定できる)。
クロスサイト スクリプティング(XSS)に対する
フィルタ機能(ページの読み込みを停止)を強制的に有効にする。
-
現在のブラウザでは以下を設定することで、
X-XSS-Protectionは大枠不要だが、- 強い
Content-Security-Policyをサイトが実装し、 - インライン JavaScript の使用を無効(
'unsafe-inline'を許可しない)にする。
- 強い
-
Content-Security-Policyに対応していない古いブラウザでは防御になる。
補足(最新化): XSS Auditor は、 フィルタ自体が情報漏洩の経路になる問題(XS-Leaks)が指摘され、 Chrome 78 / Edge で削除、Firefox は元から未実装である。 現在は
X-XSS-Protection: 0(明示的に無効化)を推奨する見解が主流で、 防御はContent-Security-Policyに一本化するのが正しい。
- RFC 7034 仕様の標準ヘッダ
- 内部にページを表示しないように指定する。
- クリック ジャッキング攻撃を防ぐために使用する。
- また、同一生成元(Same-Origin)を許可できる。
| 値 | 意味 |
|---|---|
DENY |
一切フレーム内に表示させない |
SAMEORIGIN |
同一生成元のページからのみ許可 |
ALLOW-FROM <uri> |
指定した生成元からのみ許可(現在は非推奨・多くのブラウザで未対応) |
補足(最新化):
X-Frame-Optionsの後継は CSP のframe-ancestorsディレクティブである。ALLOW-FROMの代替になるうえ、複数の生成元を指定できる。Content-Security-Policy: frame-ancestors 'self' https://example.com;両方指定した場合、対応ブラウザでは
frame-ancestorsが優先される。
- W3C 仕様の標準ヘッダ
-
Content-Typeの自動的判断(MIME sniffing)を止め、合致しない動作を回避する。
X-Content-Type-Options: nosniff
特定の種類の攻撃を検知し、影響を軽減するために追加できるセキュリティ レイヤ。
Content-Security-Policy(MS_ContentSecurityPolicy.md)
- W3C 仕様の標準ヘッダ
- 現在接続しているドメインへの次回以降のアクセスにおいて、HTTPS の使用を強制する。
詳細は SSL/TLS を参照。
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
-
RFC 7469 仕様の標準ヘッダ
-
Pre-loaded public key pinning
本物の証明書の公開鍵データのハッシュ値をブラウザにあらかじめ登録し、
ブラウザが TLS 接続する際に実際のサーバから送信されてくる証明書の
公開鍵データのハッシュ値と比較して、不正な証明書の利用を検知、防止する機能。 -
HTTP-based public key pinning (HPKP)
サーバから HTTP ヘッダでブラウザに Pinning 情報を通知し登録させる。
補足(最新化): HPKP は廃止された(Chrome 72 で削除、Firefox も撤去)。 設定ミスや鍵の紛失でサイトが長期間閲覧不能になる (いわゆる HPKP suicide)リスクが高く、 かつ攻撃者が悪用して正規サイトを封鎖できる(RansomPKP)ためである。
代替として、 Certificate Transparency(CT) による誤発行の監視と、
Expect-CT(これも役目を終え非推奨)を経て、 現在は CT ログが証明書発行の必須要件となることで担保されている。 なお、証明書ピンニング自体はモバイル アプリ等では引き続き有効な手段である。
補足(最新化): 元 Wiki 執筆時以降に一般化した主なヘッダを補う。
| ヘッダ | 用途 |
|---|---|
Referrer-Policy |
Referer ヘッダの送出範囲を制御(strict-origin-when-cross-origin が既定寄り) |
Permissions-Policy |
カメラ・位置情報等のブラウザ機能の利用可否を制御(旧 Feature-Policy) |
Cross-Origin-Opener-Policy (COOP) |
別生成元のウィンドウとのブラウジング コンテキスト分離 |
Cross-Origin-Embedder-Policy (COEP) |
埋め込みリソースに明示的な許可を要求 |
Cross-Origin-Resource-Policy (CORP) |
自リソースを他生成元から読み込ませない |
Cache-Control: no-store |
認証済みページのキャッシュ抑止(キャッシュ・コントロール) |
COOP / COEP は、Spectre 系のサイドチャネル攻撃への対策として
クロスオリジン分離(crossOriginIsolated)を成立させるために用いる。
- CORS (Cross-Origin Resource Sharing)
- Cookie
- SSL/TLS
- HTTP ヘッダー - MDN
- コンテンツセキュリティポリシー (CSP) - MDN
- OWASP Secure Headers Project
Tags: セキュリティ, IT国際標準, 通信技術, IIS, .NET開発, .NET Core, ASP.NET, ASP.NET MVC
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。