PDOにおけるSQLインジェクションの危険性とその回避についてまとめ

PHPのデータベース・アクセス・ライブラリPDOは、DB接続時の文字エンコーディング指定ができないため、文字エンコーディングの選択によっては、プレースホルダを使っていてもSQLインジェクション脆弱性が発生しうるという徳丸氏のブログ内容に対し、識者がその回避方法について試し、報告しています。
8
Moriyoshi Koizumi @moriyoshit

UTF-8 に Boyer-Moore 使えるってことは、re2c は UTF-8 safe ってことだよね。だとすれば、一旦 UTF-8 に変換して re2c で生成した字句解析器通して、元に戻すなりしたほうがいいのかな。

2010-07-02 12:21:03
Moriyoshi Koizumi @moriyoshit

そうすると、エンコーディング変換エンジンが存在することが前提となるから、iconvあたりを使うのが妥当とかって話になるのかな。いや、せめて ICU にしておきたい。とすると、mbstring を ICU で書き直すって話を進めないといけなくなるのか。ああ。

2010-07-02 12:22:00
Moriyoshi Koizumi @moriyoshit

果たして変換していいのかどうかという問題もあり。今のMySQLもSJISを生で格納できるという認識なので、そうだとすると、外字/絵文字etc.の問題で引っかかる可能性がある。

2010-07-02 12:25:27
Moriyoshi Koizumi @moriyoshit

結論としてはPHPとMySQLを使わない、ってことでいいですか。

2010-07-02 12:25:46
徳丸 浩 @ockeghem

MDB2+MySQLもイマイチで時々そう思うんですが、この組み合わせ(PHP+MySQL)が世界で一番使われていそうですねぇ RT @moriyoshit: 結論としてはPHPとMySQLを使わない、ってことでいいですか。

2010-07-02 12:33:48