コンテンツスニッフィング
From Wikipedia, the free encyclopedia
コンテンツスニッフィング(英: Content sniffing)、またはメディアタイプスニッフィング(英:media type sniffing)、MIMEスニッフィング(英:MIME sniffing)とは、バイトストリームの内容を検査し、その中のデータのファイルフォーマットを推測しようとする方法である。
コンテンツスニッフィングは一般的に、ファイルを正しく判別するために必要となる正確なメタデータが欠如しているのを補うために行われる。
コンテンツスニッフィングの手法は、多くのファイルフォーマットに見られる手法を冗長的に組み合わせる。ファイルシグネチャやマジックナンバー、ヒューリスティック、バイト頻度やn-gramテーブルの使用、およびベイズ推定などの手法がある。
Multipurpose Internet Mail Extensions (MIME) スニッフィングは、ウェブコンテンツのMIMEタイプを正しく信号で送らないウェブサイトが正しく表示されるのを助ける試みとして、Internet Explorerをなどのウェブブラウザでかつて使用されていた手法である[1]。この手法は、深刻なセキュリティ上の脆弱性[2]に利用されることになり使用されなくなった。MIMEスニッフィングアルゴリズムを悪用することで、サイト運営者やユーザーが予期しない操作(クロスサイトスクリプティングなど)を攻撃者が実行できるような方法で、ブラウザにデータを解釈させることが可能になるからである[3]。さらに、コンテンツに正しくMIMEタイプを割り当てていないサイトをブラウザで正しく動作するように見せかけることで、資料の正しいラベル付けに失敗することも多かった。その結果、これらのサイトが機能するためにコンテンツスニッフィングが必要となり、ウェブ標準およびセキュリティのベストプラクティスとの非互換性の悪循環を生み出している。
HTML5にはメディアタイプスニッフィングが存在し、セキュリティの要件と、MIMEタイプデータが欠落または不正確なウェブコンテンツとの後方互換性の必要性とのバランスを取ろうとしている。これは、実装間で単一の明確に定義された決定論的な動作セットを実装するために使用できる正確な仕様を提供することを試みている[4]。
UNIXのfile コマンドは、コンテンツスニッフィングアプリケーションと見なすことができる。