StringEscapeUtils イイ
2007/06/21
SQLインジェクションの話。
新規に作るアプリなら、バインド変数(?)を通すから、SQLインジェクションの対策はできるんですが、古いアプリの修正とか、汚ない話になってくると、独自にエスケープを行なわなければならない場合があります。
今回、修正しているプロジェクトに既にあるエスケープメソッドが、’ とか ; とかを根こそぎ削除していました。(((( ;゚Д゚))))
そんな時は、commons lang の StringEscapeUtilsを使うと余分なことを気にしなくて良さそうでした。
statement.executeQuery(“SELECT * FROM MOVIES WHERE TITLE='” +
StringEscapeUtils.escapeSql(“McHale’s Navy”) +
“‘”);
http://www.jajakarta.org/commons/lang-2.0/ja/withoutPrimary/org/apache/commons/lang/StringEscapeUtils.html
StringEscapeUtilsには、html, java, javascript, sql, xml 用のエスケープ、アンエスケープメソッドが在りました。確か、VelocityのEscapeToolsも、これを使ってたような気がします。
#今どき、sqlを書くなら、名前付きバインド変数が使える環境がいい。