Prepared Statements and SQL injections

http://isc.sans.org/diary.html?storyid=2301
タイトルを見たときはドキッとしたが、結局はドライバの実装依存
ドライバ内部でPrepared Statementを展開してSQL文に直してる
様な実装の場合問題にはなり得るかな。(あるのか?)

mysqlとかはPrepared StatementでSQLクエリキャッシュが効かない
様なので、わざわざ展開するようなラッパー書いたりしてる人も居るのかも。
http://dev.mysql.com/doc/refman/5.0/en/query-cache-how.html


クエリ自体のキャッシュが効かないと云うと、かなりネガティブな印象を
持つけど、mysqlのそれはクエリ結果までキャッシュしてるようなので
Oracle等のそれとは性質自体が異なっている。

OracleSQL文のコンパイルと実行計画までで結果までは保持していないはず。
バインド変数使うとヒストグラムが考慮されない為、あえて展開して書く事は
あるだろうけど、それも 外部入力に依存する危険性排除+ライブラリキャッシュ効率化
のメリット捨ててまで選択するのは限られたケースだと思われる。