StringEscapeUtils イイ

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を書くなら、名前付きバインド変数が使える環境がいい。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

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