X-Content-Type-Optionsは何をしますか?

click fraud protection

セキュリティヘッダーは、それぞれがブラウザでセキュリティ制御を適用するWebサーバーによって設定できるHTTP応答ヘッダーのサブセットです。 HTTPヘッダーは、Web要求および応答とともに送信されるメタデータの形式です。 セキュリティヘッダー「X-Content-Type-Options」は、ブラウザがMIMEスニッフィングを実行するのを防ぎます。

注:HTTPヘッダーはHTTP専用ではなく、HTTPSでも使用されます。

MIMEスニッフィングとは何ですか?

データがWeb経由で送信される場合、含まれるメタデータの1つはMIMEタイプです。 多目的インターネットメール拡張機能(MIMEタイプ)は、ファイルに含まれるデータのタイプを定義するために使用される標準であり、ファイルの処理方法を示します。 通常、MIMEタイプは、オプションのパラメーターと値を持つタイプとサブタイプで構成されます。 たとえば、UTF-8テキストファイルのMIMEタイプは「text / plain;」です。 charset = UTF-8」。 この例では、タイプは「text」、サブタイプは「plain」、パラメーターは「charset」、値は「UTF-8」です。

ファイルの誤ったラベル付けと誤った処理を防ぐために、Webサーバーは通常MIMEスニッフィングを実行します。 これは、明示的に指定されたMIMEタイプが無視され、代わりにファイルの先頭が分析されるプロセスです。 ほとんどのファイルタイプには、ファイルのタイプを示すヘッダーシーケンスが含まれています。 ほとんどの場合、MIMEタイプは正しく、ファイルをスニッフィングしても違いはありません。 ただし、違いがある場合、ウェブサーバーは、宣言されたMIMEタイプではなく、スニッフィングされたファイルタイプを使用してファイルの処理方法を決定します。

この問題は、攻撃者がPNG画像などのファイルをアップロードできた場合に発生しますが、ファイルは実際にはJavaScriptコードのようなものです。 2つのテキストタイプなど、同様のファイルタイプの場合、これによってそれほど問題が発生することはありません。 ただし、完全に無害なファイルを代わりに実行できる場合は、深刻な問題になります。

X-Content-Type-Optionsは何をしますか?

X-Content-Type-Optionsヘッダーには、可能な値「X-Content-Type-Options:nosniff」が1つだけあります。 これを有効にすると、MIMEタイプのスニッフィングを実行してはならず、代わりに明示的に宣言された値に依存する必要があることをユーザーのブラウザに通知します。 この設定がないと、悪意のあるJavaScriptファイルがPNGなどの画像に偽装された場合、JavaScriptファイルが実行されます。 X-Content-Type-Optionsを有効にすると、ファイルは有効な画像形式ではないため、ファイルを読み込めない画像として扱われます。

X-Content-Type-Optionsは、悪意のあるファイルが誤って提供される可能性がないため、完全にファーストパーティのリソースを使用するWebサイトでは特に必要ありません。 Webサイトが外部リソースやユーザーが送信したリソースなどのサードパーティのコンテンツを使用している場合、X-Content-Type-Optionsはこのタイプの攻撃に対する保護を提供します。