微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JDBC的SQL注入漏洞分析和解决

1.1.1 sql注入漏洞分析

JDBC的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 举报,一经查实,本站将立刻删除。

相关推荐