正如我们所知,避免 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 注入?