防止DAO层中的SQL注入

时间:2011-06-25 16:57:08

标签: jdbc

假设我们在DTOObject中有数据

public void loginUser(UserDTO)
{

String name = UserDTO.getName();
String pwd = UserDTO.getPassword();
String sql  = "select UNAME , PWD from LoginTable where uname='"+name+"' and PWD='"+pwd+"';
}

请在此代码中告诉我,我们如何防止SQL注入?我们如何检查恶意字符?

2 个答案:

答案 0 :(得分:0)

最好的办法是将SQL从不属于它的DTO移动到它所属的DAO,并在那里使用PreparedStatement。

答案 1 :(得分:0)

这是在JDBC中使用PreparedStatement的{​​{3}}。如果你四处搜寻,还有很多其他人。

为了记录,我必须说我不同意这样的说法,即准备好的声明的主要优点是它可以(虽然不一定)提前发送到数据库。主要优点是参数。