1.1.1 sql注入漏洞分析
1.1.2 sql注入漏洞解决
1.1.2 sql注入漏洞解决
需要采用PreparedStatement对象解决sql注入漏洞。这个对象将sql预先进行编译,使用?作为占位符。?所代表内容是sql所固定。再次传入变量(包含sql的关键字)。这个时候也不会识别这些关键字。
public class UserDao { ????????? ????????public boolean login(String username,String password){ ????????????????Connection conn = null; ????????????????PreparedStatement pstmt = null; ????????????????ResultSet rs = null; ????????????????// 定义一个变量: ????????????????boolean flag = false; ????????????????try{ ????????????????????????// 获得连接: ????????????????????????conn = JDBCUtils.getConnection(); ????????????????????????// 编写sql语句: ????????????????????????String sql = "select * from user where username = ? and password = ?"; ????????????????????????// 预编译sql ????????????????????????pstmt = conn.prepareStatement(sql); ????????????????????????// 设置参数: ????????????????????????pstmt.setString(1,username); ????????????????????????pstmt.setString(2,password); ????????????????????????// 执行sql语句: ????????????????????????rs = pstmt.executeQuery(); ????????????????????????if(rs.next()){ ????????????????????????????????// 说明根据用户名和密码可以查询到这条记录 ????????????????????????????????flag = true; ????????????????????????} ????????????????}catch(Exception e){ ????????????????????????e.printstacktrace(); ????????????????}finally{ ????????????????????????JDBCUtils.release(rs,pstmt,conn); ????????????????} ????????????????return flag; ????????}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。