水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 2バイト目を食ってしまう

2バイト目を食ってしまう

2006年2月14日(火曜日)

2バイト目を食ってしまう

PHP 利用時に Shift_JIS で addslashes() によるエスケープ処理に SQL インジェクション可能な穴 (d.hatena.ne.jp)」。興味深いです。

内部処理が Shift_JIS の場合、2バイト文字の 1バイト目に相当するビット列を入れてやると、その直後の文字が食われてしまう場合があるという話ですね。たとえば、シングルクォート (0x27) の頭にバックスラッシュ (0x5c) をつけるというエスケープ処理が行われている場合、0x83 0x27 というビット列が送られると 0x27 の前に 0x5c がつけられて、0x83 0x5c 0x27 となるわけですが、0x835c は Shift_JIS の「ソ」なので、「ソ'」となってシングルクォートがそのままイキになってしまいます。

※「ポータル墓場 [01363] Re: XSS (rryu.sakura.ne.jp)」で既出の話ではありますが。

関連する話題: セキュリティ

最近の日記

関わった本など