SQL注入setString

时间:2018-08-20 01:27:59

标签: java mysql sql sql-injection

是否有可能在下面的语句中注入一些代码(我尝试了sleep函数,它起作用了,但是我正在寻找一种获取表名的方法):

PreparedStatement statement = connection.prepareStatement(
      "select password from " + USERS_TABLE_NAME + " where userid = ? and password = ?");
statement.setString(1, username_login);
statement.setString(2, password_login);

2 个答案:

答案 0 :(得分:0)

使用准备好的语句可使代码免受SQL注入的影响;将某些代码注入该查询的唯一方法是以某种方式篡改USERS_TABLE_NAME。由于您没有提供与此相关的任何代码,因此我对此不多透露,但是如果它只是一个字符串常量,您应该没事。

答案 1 :(得分:0)

  

我读到它可以使用ORDER BY子句进行注射!!

上面显示的示例不容易受到ORDER BY子句中的注入的影响。该查询甚至没有ORDER BY子句,也没有任何可以将ORDER BY子句附加到查询末尾的字符串连接。

只有在您允许不信任的内容将SQL查询传递给prepare()方法之前,才可以进行SQL注入。