X-Content-Type-Options

概要
Content-Typeヘッダで指定されたMIMEタイプの変更を禁止
関連
セキュリティ
slug
infographicIT/http/headers/x-content-type-options
種別
Response
 

X-Content-Type-Optionsヘッダの概要

X-Content-Type-Optionsヘッダとは、「Content-Type」ヘッダで指定されたMediaタイプ(MIMEタイプ)を強制的に適用するためのレスポンスヘッダ。
ブラウザによるMIMEスニッフィングを抑制する。
 
以下の用語の詳細な説明は、各リンク先の記事を参照。
 

MIME スニッフィングとは

MIMEスニッフィングとは、ブラウザがコンテンツの Content-Typeヘッダで指定されているMediaタイプ(MIMEタイプ)が間違っていると判断した際に、正しい と推測したMediaタイプ(MIMEタイプ)を適用する機能。
 

X-Content-Type-Optionsヘッダが必要な理由

リクエストで指定した値がレスポンスで返る場合、MIMEスニッフィング機能を悪用してMIMEタイプ(Mediaタイプ)を誤認識させ、スクリプトを実行する攻撃があるため。
 

X-Content-Type-Optionsヘッダの利用方法

レスポンスヘッダに以下を追記することで、リクエストで指定されたMediaタイプ(MIMEタイプ)とレスポンスデータのMediaタイプが異なる場合にその通信をブロックする。
Plain Text
 

参考サイト

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 リクエスト先のタイプが以下の場合、リクエストをブロックします。 Cross-Origin Read Blocking (CORB) 保護を次の MIME タイプに対して有効にします。 Update compatibility data on GitHub Firefox 72 は最上位文書で X-Content-Type-Options: nosniff を有効にします。