在JDBC中使用PreparedStatement对象防止sql注入

在JDBC中,可以得知账号名并在账号名加入如“#”,“-- ”,’or ‘1=1,进行拼接,改变sql语句的语义,使不需要密码也可以登录。

JDBC前两步不变

1、注册数据库驱动

2、获取数据库连接

3、获取传输器是将sql语句中的参数改为可变参数(?)

例如

1 String sql = "select * from user where username=? and password=?";
2 PreparedStatement ps = conn.prepareStatement( sql ); 

//将Sql与语句中的参数值发送给服务器

1 ps.setString( 1 , user );
2 ps.setString( 2 , psw ); 

4、执行Sql语句

1 ResultSet rs = ps.executeQuery(); //这里不要再传SQL,因为 上面已经传过了


5、处理结果

1 boolean hasUser = rs.next(); 


6、释放资源

1 rs.close();    
2 ps.close();    
3 conn.close();    
4 return hasUser; //返回处理结果

 

posted @ 2020-12-12 15:44  souwote  阅读(103)  评论(0编辑  收藏  举报