タグ

PHPと文字コードに関するockeghemのブックマーク (4)

  • htmlspecialchars()/htmlentities()の使用にはPHP 5.2.12以降/PHP 5.3.2以降を使う - zz log

    携帯の絵文字について調べている際に、見つけたエントリーのまとめです。 htmlspecialchars()/htmlentities()を使用する際には、 PHP 5.2.12以降、PHP 5.3.2以降を使うこと。 以前のバージョンでは、 htmlspecialchars(ENT_QUOTES)を使用しても、XSSの可能性があります。 条件はかなり特殊(PHP側がShift_JISオンリー&特定のブラウザ)です。 (携帯はどうなのだろう。docomo買うしかないのかぁ。auとsoftbankの2個でもきついのに(非Wi-Fi搭載機種)。すべてがWi-Fi対応なら、パケット代が楽になるのに!) 参考 PHP 5.2.12 の文字エンコーディング関連の修正点 - t_komuraの日記 Shift_JISを利用することの是非 - ockeghem(徳丸浩)の日記 徳丸浩の日記 - [php]

    htmlspecialchars()/htmlentities()の使用にはPHP 5.2.12以降/PHP 5.3.2以降を使う - zz log
  • htmlspecialcharsのパッチ私案 - 岩本隆史の日記帳(アーカイブ)

    PHPhtmlspecialchars関数について、文字エンコーディングの妥当性チェックが不充分であること、また場合によってはXSS攻撃が可能になることが、下記ふたつの記事で指摘されています。 htmlspecialcharsは不正な文字エンコーディングをどこまでチェックするか | 徳丸浩の日記 Shift_JIS では、htmlspecialchars() を使用しても XSS が可能な場合がある - t_komuraの日記 徳丸さんの記事では、仕様変更も提案されています。 冗長なUTF-8は不正なエンコーディングとして扱う(出力を空にする) Shift_JIS、EUC-JPの2バイト目が不正な場合も、エラーとして出力を空にする htmlspecialcharsは不正な文字エンコーディングをどこまでチェックするか | 徳丸浩の日記 さらに、id:t_komuraさんの記事をうければ:

    htmlspecialcharsのパッチ私案 - 岩本隆史の日記帳(アーカイブ)
    ockeghem
    ockeghem 2009/10/05
    これはすばらしい
  • Shift_JIS では、htmlspecialchars() を使用しても XSS が可能な場合がある - t_komuraの日記

    以下のページに関連して、htmlspecialchars() を使用している場合でも XSS が可能かどうか少し調べてみました。 http://www.tokumaru.org/d/20090930.html その結果、いくつかのブラウザで文字エンコーディングに Shift_JIS を使用していた場合、XSS が可能なことを確認しました。 テストコードは以下の通りです。リンクにマウスポインタを乗せると埋め込んだ Javascript が実行されます。 <?php $_GET['a1'] = "\xf0"; // \xf0 - \xfc で可能 $_GET['a2'] = " href=dummy onmouseover=alert(document.title) dummy=dummy"; header( "Content-Type:text/html; charset=Shift_JIS

    Shift_JIS では、htmlspecialchars() を使用しても XSS が可能な場合がある - t_komuraの日記
    ockeghem
    ockeghem 2009/10/05
    報告ありがとうございます。素晴らしいです。しかし、なぜそんな中途半端な仕様という気持ちで 少々のけぞりましたが、まあPHPですしね。今後この手の検証をする際は文字通り全てのパターンを検証することにします
  • 第3回 携帯サイトの文字コードに気をつける | gihyo.jp

    上記はキャリアが対応を発表している文字エンコードであり、機種によっては公式に発表している文字エンコード以外にも対応している場合もあります。上記の表から、携帯サイトで共通に使える文字エンコードは「Shift_JIS」であることがわかります。このことから携帯サイトでは基的に「Shift_JIS」を使って画面の入出力を行うことになります。ちなみにSoftBankの3GC型などの端末では、「⁠Shift_JIS、EUC-JP、ISO-2022UTF-8」のそれぞれに対応していますが、「⁠EUC-JP、ISO-2022」はキャリアのゲートウェイを通過するときに「Shift_JIS」に自動的に変換されてきます。そのため出力はできますが取り扱いはShift_JISとなるため、SoftBankのみの携帯サイトの場合はShift_JISかUTF-8に絞って対応するとよいでしょう。 絵文字を考慮に入れた文

    第3回 携帯サイトの文字コードに気をつける | gihyo.jp
    ockeghem
    ockeghem 2009/02/02
    『上記の表から,携帯サイトで共通に使える文字エンコードは「Shift-JIS」であることがわかります』<表にはShift_JISと正しく記載されているのに、なぜ本文にはShift-JISと書くのだろう/Shift_JISに修正されていた(2月3日)
  • 1