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)」で既出の話ではありますが。
- 「2バイト目を食ってしまう」へのコメント (1件)
関連する話題: セキュリティ
- 前(古い): ASK ACCS 個人情報漏洩事件終結?
- 次(新しい): 巨大チョコレート