JAVA使用预编译防止SQL注入

2018/03/24

JAVA使用预编译防止SQL注入

这是一条正常的SQL语句:

SELECT * FROM users WHERE name ='$var';

但是当变量var为 ' or true or '时,整条语句就变成:

SELECT * FROM users WHERE name ='' or true or '';

很明显,这条语句WHERE后面跟的条件无论如何都为真,所以会有SQL注入现象的产生,咋JAVA中可以使用PrepareStatment解决:

PreparedStatement preparedStatement=connection.prepareStatement("SELECT * FROM users WHERE name =?;");

然后,可以通过setXXX的方式来预编译参数:

preparedStatement.setString(x,name);

其中x为参数下标,从1开始,若无法明确参数类型,可以使用setObject()方法,PrepareStatment会自动进行判断处理。

preparedStatement.setObject(x,name);


Post Directory