sniffer

sniffing

[53] データを構成するバイト列を検査してその内容の種別などを決定することを sniffing といいます。

型を検知する

MIME sniffing (Web)

[1] Web では、 MIME sniffing によって MIME型が決定されます。

MIME sniffing 参照。

file(1)

[5] file(1) 参照。

MIME magic

[97] 多くのプラットフォームMIME magic などと称するツールがあります。 これは、ファイルの先頭のバイト列から MIME型を推定するものです。

MIME magic 参照。

RDFa 処理器の Sniffing

[50] RDFa 1.1 に基づく RDFa処理器は、 MIME型によってホスト言語を決定しなければなりませんMIME型を決定できないか未対応の時は、 application/xml としなければなりません>>49

[51] >>50 の直後にこれと矛盾する次のような「NOTE」があります。 MIME型が無い時、 DOCTYPE根要素拡張子利用者定義の引数など追加の仕組みを用いても構いません >>49

IPP の Sniffing

[82] RFC 2911 - Internet Printing Protocol/1.1: Model and Semantics ( 版) https://tools.ietf.org/html/rfc2911#section-4.1.9.1

One special type is 'application/octet-stream'. If the Printer object supports this value, the Printer object MUST be capable of auto-sensing the format of the document data using an implementation-dependent method that examines some number of octets of the document data, either as part of the create operation and/or at document processing time.

メモ

[24] Word で「打」で始まるテキスト ファイルを開くとコンバーターを要求される | Japan Office Client Support Blog, , https://officesupportjp.github.io/blog/cm15ufuis0000f0seec0i7yev/

[23] compact_enc_det/compact_enc_det/compact_enc_det.cc at master · google/compact_enc_det · GitHub, https://github.com/google/compact_enc_det/blob/master/compact_enc_det/compact_enc_det.cc#L2288

[26] >>23 ced文字コードの判定のライブラリーですが、 文字列ではなくバイナリーであるとの判定をすることもあり、 主要なファイル形式の先頭バイトパターンを知っています。

文字符号化を検知する

[10] テキストファイル文字コードの判定の処理が必要になることがしばしばあります。 いくつかのテキストファイルファイル形式はその手法を定めています。

[11] この処理はファイル形式の判定と同時に実装されることもあれば、 別個に実装されることもあります。

[12] 全般については文字コードの判定を参照。

[13] ファイル形式中立の記述法については >>3 を参照。

符号化 sniffing (Web)

encoding sniffing algorithm

その他のファイル形式の sniffing

[25] RFC 4627JSONcharset sniffing について言及しています。 JSON

[35] SRGSABNF形XML と同等の sniffing を求めています。 #ABNF

特別な記述を検出する手法

[3] テキストファイルの内なるメタ情報

テキストファイル, テキストファイルの先頭, コメントの中身が意味を持ってしまう

sniffing の対象となる範囲

資源ヘッダー

相互運用性

[14] sniffing発見的方法によることが多く、相互運用性に乏しいのが問題です。

[15] Webプラットフォームsniffing の方法も標準化していますが、 各実装は完全にそれに従っているわけではなく、 相互運用性の問題は皆無ではありません。

セキュリティー

[16] sniffing相互運用性の問題は、そのままセキュリティーの問題となります。

[17] とりわけ、安全と考えられているファイル形式が危険なファイル形式と(誤)判定され得る状況は、 しばしば悪用されます。

[18] 故に、

セキュリティーのために極めて重要と考えられています。


[2] 入力が短すぎるときの処置が正しくない実装がしばしばみられます。 所与のパターンとの比較時にパターンより短い入力を想定し忘れているような類です。 バッファーオーバーフローなど深刻な不具合となることもあり、 特に注意が必要です。

[4] 入力が長すぎる場合にも注意が必要です。例えば数GBのファイルの全体を判定するため全体をメモリー上に載せるのは無駄であり、 適当なところで打ち切るのが妥当です。

[6] 無限の入力を扱い得るプラットフォームでは、処理が終了しなくなることがないよう、 特に注意が必要です。

[7] を単位とする処理が必要な場合にもが長すぎる場合の考慮を忘れがちなので、 注意が必要です。

[8] を期待する処理にバイナリーデータが入力されたとき、 当該バイナリーデータには改行コードが含まれないかもしれません。

資源ヘッダー


文字のセキュリティー

関連

ファイル形式

文字としてのバイト

テキストファイルの先頭

データの種別以外の sniffing

browser sniffing

メモ

[9] rouge/lib/rouge/guessers at master · jneen/rouge () https://github.com/jneen/rouge/tree/master/lib/rouge/guessers