SET NAMESを使わない方が良い

PHPからSET NAMESを使わない方が良い理由と対策まとめ | twk @ ふらっと

MySQL4なサバでは使ったりしてましたが。。

SQLの実行により文字コードが変更されるように思えるが、PHPのMySQL関連の関数で考慮される文字コードは変更されない。このため、エスケープ関数mysql_real_escape_string()等で、必要なエスケープがなされず脆弱性を引き起こすケースがある。

とのこと。mysql_set_charset()のほうを使おう!とのことです。

使いたい文字コードがShift_JISなら
入力文字列が正しい文字コードかチェックして、その上で自前のエスケープ用の関数を通せばOK
文字コードのチェックにはmb_check_encoding()またはmb_convert_encoding()を使えば良い。
自前のエスケープ用の関数では、Shift_JISの x00, n, r, , ‘, ” そして x1a をエスケープすれば良いはず。

これは良い情報ですね。古いPHPでShift_JIS使う時には覚えておこう。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください