私のプロジェクトで SQL インジェクション攻撃を回避するために、パラメーター化されたクエリの方法でデータベースにアクセスしようとしています。現在、以下のように等しいケースを処理する方法を知っています(Spring JdbcTemplateを使用):
String sql = "SELECT * FROM T_USER WHERE USERNAME = ? AND PASSWORD = ?"
jdbcTemplate.query(sql,
new UserRowMapper(),
new Object[]{"%admin%", "%password%"});
上記のコードは問題なく実行されますが、「IN」ケースを処理する方法がわかりませんでした。以下は私のケースであり、動作に失敗しました:
String sql =
"SELECT * FROM T_USER WHERE USERNAME = ? AND PASSWORD = ? AND CLASS_ID IN (?)"
jdbcTemplate.query(sql,
new UserRowMapper(),
new Object[]{"%admin%", "%password%", "1,2,3"});
誰か案内してくれませんか?どうもありがとう。