在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; //返回处理结果