JDBC的SQL注入漏洞分析和解决
1.1.1 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; ????????}
相关推荐
chenjiazhu 2020-07-08
世樹 2020-06-05
ASoc 2020-11-14
Andrea0 2020-09-18
Cherishyuu 2020-08-19
dongtiandeyu 2020-08-18
CoderYYN 2020-08-16
大黑牛 2020-08-15
Dullonjiang 2020-08-11
gaozhennan 2020-08-03
mcvsyy 2020-08-02
zbcaicai 2020-07-29
AscaryBird 2020-07-27
liulin0 2020-07-26
ldcwang 2020-07-26
helloxusir 2020-07-25
娜娜 2020-07-20
pengpengflyjhp 2020-07-19
点滴技术生活 2020-07-19