X-Content-Type-Options
X-Content-Type-Options
は HTTP のレスポンスヘッダーで、 Content-Type
ヘッダーで示された MIME タイプを変更せずに従うべきであることを示すために、サーバーによって使用されるマーカーです。これにより、MIME タイプのスニッフィングを抑止することができます。すなわち、ウェブマスターが自分が何をしているかを分かっていると言う手段です。
このヘッダーは、コンテンツのスニッフィングにより、実行不可能な MIME タイプを実行可能な MIME タイプに変換してしまうという事故をウェブマスターが抑止するための方法として、マイクロソフトが IE 8 で導入したものです。それ以来、他のブラウザーは MIME スニッフィングのアルゴリズムがそれほど積極的ではなくても、このヘッダーを導入してきました。
Firefox 72 から、 Content-type
が提供されている場合、 MIME スニッフィングの抑止が最上位の文書にも適用されるようになりました。これにより、 HTML のウェブページが text/html
以外の MIME タイプで提供されている場合、表示される代わりにダウンロードされることがあります。両方のヘッダーを正しく設定してください。
サイトのセキュリティテスターは通常、このヘッダーが設定されていることを期待しています。
注: X-Content-Type-Options
は、 nosniff
によるリクエストブロッキングをリクエスト先が "script
" と "style
" の場合のみ適用します。しかし、 Cross-Origin Read Blocking (CORB) 保護を HTML, TXT, JSON, XML の各ファイル (SVG image/svg+xml
を除く) に対して有効にすることもできます。
ヘッダー種別 | レスポンスヘッダー |
---|---|
禁止ヘッダー名 | いいえ |
構文
X-Content-Type-Options: nosniff
ディレクティブ
nosniff
- リクエスト先のタイプが以下の場合、リクエストをブロックします。
- "
style
" で MIME タイプがtext/css
でない、または - "
script
" で MIME タイプが JavaScript の MIME タイプでない
- "
- Cross-Origin Read Blocking (CORB) 保護を次の MIME タイプに対して有効にします。
text/html
text/plain
text/json
,application/json
またはその他の JSON 拡張を伴うタイプ:*/*+json
text/xml
,application/xml
またはその他の XML 拡張を伴うタイプ:*/*+xml
(image/svg+xml
を除く)
仕様書
仕様書 | 状態 | 備考 |
---|---|---|
Fetch X-Content-Type-Options definition の定義 |
現行の標準 | 初回定義 |
ブラウザーの互換性
BCD tables only load in the browser
ブラウザー固有の注意事項
- Firefox 72 は最上位文書で
X-Content-Type-Options: nosniff
を有効にします。
関連情報
Content-Type
- Microsoft による X-Content-Type-Options の 元の定義
- The Mozilla Observatory tool testing the configuration (including this header) of Web sites for safety and security
- Mitigating MIME Confusion Attacks in Firefox
- Cross-Origin Read Blocking (CORB)
- Google Docs CORB explainer