以下のページに関連して、htmlspecialchars() を使用している場合でも XSS が可能かどうか少し調べてみました。http://www.tokumaru.org/d/20090930.htmlその結果、いくつかのブラウザで文字エンコーディングに Shift_JIS を使用していた場合、XSS が可能なことを確認しました。テストコードは以下の通りです。リンクにマウスポインタを乗せると埋め込んだ Javascript が実行されます。 $_GET['a1'] = "\xf0"; // \xf0 ... > このページを見る
最終更新時間:
2009年10月05日00時08分
みんなのブックマーク 人気(0) 新着
- PHP と SJIS の合体攻撃だししかたない・・・のかなぁ? けっきょくどのえんこ~でぃんぐ使うにしてもちゃんと確認しましょうってことで...〆(´・ω・`;【みかん
- []
- 『PHP の htmlspecialchars() では、SJIS(Shift_JIS) の場合、\\xf0 - \\xfc を単独で指定しても排除しない(PHP 5.3.0 で確認)』『一部のブラウザでは、\\xf0 - \\xfc を Shift_JIS の先行バイトとして認識し、次の1バイトを合わせて1文字とする』
- PHPが悪い
- マルチバイト文字とXSSな話 SJISだと 0x81-0x9F、0xE0-0xFC が先行バイトとして認識 htmlspecialchars だと0xF0-0xFC 以外は弾いてくれる
- 文字コード絡みはホント怖いわ・・・
- Shift_JIS-2004ではF0~FCは先行バイトなので、一部ブラウザで発生するXSS問題。
- PHP怖い。でも人気あるんだよなぁ。
- Shift_JIS
- 全部 SJIS で統一することなんてないと思ったけど、windows で運用しているとありえそう
- Operaたん……お前もか。 Opera10.00でも発動。
- 一部のブラウザでは、\xf0 - \xfc を Shift_JIS の先行バイトとして認識し、次の1バイトを合わせて1文字とする(Mozilla Firefox 3.5.3 と Internet Explorer 8(8.0.6001.18813) で確認)
- 報告ありがとうございます。素晴らしいです。しかし、なぜそんな中途半端な仕様という気持ちで 少々のけぞりましたが、まあPHPですしね。今後この手の検証をする際は文字通り全てのパターンを検証することにします
このエントリーを含むエントリー(13)
-
後で読む一覧 - ひょーwiki 2 users
-
htmlspecialchars()/htmlentities()の使用にはPHP 5.2.12以降/PHP 5.3.2以... 4 users
-
PHP 5.2.12 の文字エンコーディング関連の修正点 - t_komuraの日記 17 users
-
最新の PHP スナップショットでの htmlspecialchars()/htmlentities() の修正内容につい... 14 users
-
徳丸浩の日記 - [php] - htmlspecialchars/htmlentitiesはBMP外の文字を正しく扱えない 4 users
-
徳丸浩の日記 - [php] - htmlspecialchars/htmlentitiesはBMP外の文字を正しく扱えない 2 users
-
徳丸浩の日記 - [php] - htmlspecialchars/htmlentitiesはBMP外の文字を正しく扱えない 12 users
-
徳丸浩の日記 - [php][xss] - htmlspecialcharsのShift_JISチェック漏れによるXSS回避策 3 users
-
OSS を育てるために僕らができること|SNS構築の手嶋屋 38 users
-
徳丸浩の日記 - [php][xss] - htmlspecialcharsのShift_JISチェック漏れによるXSS回避策 13 users
-
徳丸浩の日記 - [php][xss] - htmlspecialcharsのShift_JISチェック漏れによるXSS回避策 44 users
-
PHP Bugs: #49785: htmlspecialchars() should check byte sequen... 8 users
-
htmlspecialcharsのパッチ私案 - 岩本隆史の日記帳 21 users








