Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

PHPとcharsetに関するhasegawayosukeのブックマーク (3)

  • PHP :: Bug #47399 :: mb_check_encoding returns true with illegal SJIS string

    mbstring related Bug Reported by for-bugs@... Mon, 16 Feb 2009 00:05:52 +0000 PHP: 5.2.9RC2, OS: any Description: ------------ mb_check_encoding returns true when specific invalid "SJIS" or "SJIS-win" string. Reproduce code: --------------- <?php var_dump(mb_check_encoding("\x81\x3A", "SJIS-win")); Expected result: ---------------- bool(false) Actual result: -------------- bool(true)

  • mb_check_encodingは何をチェックするのか(その1 SJIS編) - hnwの日記

    (2009/02/15 17:20)「個人的な感想」を追記しました。また、下記はPHP5.2.1以降の挙動です。PHP5.2.0以前のmb_check_encodingは更にカオスなので、あまり使い物にならないと思います。 (2009/02/16 12:30)追記2:バグっぽいと思った件は当にバグで、修正がhttp://news.php.net/php.cvs/56276の通り取り込まれました。PHP5.2.9から修正される予定です。 (2009/02/22 16:20)追記3:他のエンコーディングについても調査しました。「(その2 EUC-JP編)」と「(その3 UTF-8編)」も合わせてご覧下さい。 PHPのmb_check_encoding関数が一体何のチェックをしているのか、エンコーディングごとに一通り調べてみます。 まずはSJISとSJIS-win(CP932)について調べてみ

    mb_check_encodingは何をチェックするのか(その1 SJIS編) - hnwの日記
  • 第21回 文字エンコーディングとセキュリティ(3) | gihyo.jp

    前回に引き続き、今回も文字エンコーディングとセキュリティをテーマに解説します。前回は壊れた文字エンコーディングを利用した攻撃、文字エンコーディングを誤認識させる攻撃を紹介しました。今回はSJIS特定の問題を簡単に紹介します。 文字エンコーディングのエスケープ方式を利用する方法 ほとんどの文字エンコーディングは、マルチバイト文字の中に“⁠\⁠”などの特殊文字を含みません。しかし、例外があります。Shift_JISでは“⁠\⁠”がマルチバイト文字に含まれるので、これが原因で脆弱性が発生する場合あります。 SJISの“⁠表” <?php echo rawurlencode(mb_convert_encoding('表', 'SJIS', 'UTF-8')); ?> 出力 %95%5C “%5C⁠”は“⁠\⁠”です。“⁠\⁠”は文字列のエスケープなどに利用される特殊文字です。addslashes関

    第21回 文字エンコーディングとセキュリティ(3) | gihyo.jp
    hasegawayosuke
    hasegawayosuke 2009/01/16
    Shift_JISとSJISという表記が入り乱れている<s>がSJISはXSSするので</s>きちんとShift_JISに統一すべき「文字エンコーディングを正しく,厳格に取り扱わないと,システムのセキュリティに大きく影響します。」→第19回
  • 1