私たちが知っているように、SQL インジェクションを回避する最善の方法は、バインド変数で準備済みステートメントを使用することです。しかし、準備されたステートメントを使用し、顧客IDがユーザーインターフェイスから来ている以下のような変数をバインドしないとどうなるか疑問があります
String query ="select * from customer where customerId="+customerId;
PreparedStatement stmt = con.prepareStatement(query); //line1
1 行目は、バインド変数を使用していない場合でも、SQL インジェクションを制限していますか?
最善の方法は以下であることに同意しますが、上記のアプローチでSQLインジェクションの制限も処理する場合は、上記のアプローチを優先します(レガシープロジェクトとして)
String query ="select * from customer where customerId=?";
PreparedStatement stmt = con.prepareStatement(query);
stmt.setInt(1, 100);
SQLインジェクションが不可能であることを確認するには、バインド変数を使用せずに準備されたステートメントで十分ですか?