ホーム > mysql | perl > mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ

mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ

  • 投稿者: chiba
  • 2009/8/27 木曜日 16:51:43
  • mysql | perl

skip-character-set-client-handshake を [mysqld] セクションに追記すると、クライアントがどんな文字コード設定をもっていようが問答無用で character_set_* を (_system をのぞいて) すべて同じ値に統一してくれる
http://d.hatena.ne.jp/a666666/20090826/1251270979

ふーむ。

skip-character-set-client-handshakeを薦める文書がネット上にはやたら転がってるんだけど、これには大きな落とし穴がある。

たしかに表示されるcharacter_set_*は統一されるかもしれないがこれはあくまでもサーバー側の認識であってクライアント(libmysqlclient)がcharsetをどう認識しているかというのとは関係ないのだ。で、実はlibmysqlclientが認識しているcharsetはcharacter_set_clientとは必ずしも一致しているわけではなくて、これを絶対的に一致させるには以前のエントリでも紹介したがhttp://www.klab.jp/media/mysql/index6.htmlの図3:クライアント側文字コードの指定チャートが参考になる。

skip-character-set-client-handshakeをしただけだと結局libmysqlclientが認識しているcharsetはクライアント側のコンパイル時のcharset(デフォルトではlatin-1)になる。ここで実際に送信するcharsetと乖離が起これば当然組み合わせによってはSQLインジェクションの脆弱性が発生する。id:a666666氏のmysqlはutf8でコンパイルしてujisを送信ということなので脆弱性はなさそうだが(あったら誰か教えてください)、例えばcp932を送信するのであれば以前のエントリと同様に(反対方向だけど)”\xe3\x81\x95\x5c”等が危険な文字列になる。これをlibmysqlclientはUTF-8として認識してエスケープするので”\xe3\x81\x95\x5c\x5c”になるが、サーバー側ではcp932と認識するので”\xe3\x81″ “\x95\x5c” “\x5c”と分割されてしまうという感じだ。

そもそもskip-character-set-client-handshakeなんてのはmysql4.0からの移行組用の臨時救済措置で作られたものだろうし、こんなものを使うことを前提に運用するのはやめたほうがいい。よくいわれている文字コードの変換処理をさせたくない、ということであればフィールドの文字コードと通信の文字コードを統一しておけばいいだけでしょう。

はてなブックマーク - mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:2

この記事のトラックバック URL
https://blog.everqueue.com/chiba/2009/08/27/291/trackback/
トラックバックの送信元リスト
mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ - へぼい日記 より
pingback - MySQLサーバーをインストールして初期設定をする - @blog.justoneplanet.info より 2010/8/30 月曜日

[…] mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ […]

pingback - WindowsとXAMPPでMySQLの文字コード設定 « SetucoCMSプロジェクト より 2011/1/24 月曜日

[…] ただし、skip-character-set-client-handshakeについては mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ – へぼい日記 という情報もあるし、クライアントの意向を無視し […]

ホーム > mysql | perl > mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ

検索
フィード
メタ情報

ページの上部に戻る

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy