解决SQL注入问题

大家在写登录代码时,有时候会不注意SQL注入问题,这就可能给某些人一些可乘之机,那么什么是sql注入问题呢?

SQL注入问题是在拼接sql时,有一些sql的特殊关键字参与字符串的拼接,会造成安全问题。

简单的来说就是输入“a' or 'a' = 'a ”,可以直接登录进去。

  • 今天呢也给大家带来了解决问题的方式,使用PreparedStatemnt对象解决,用?作为占位符。在上一篇代码的基础上修改:(定义sql、获取对象、给?赋值、执行sql)
public boolean login(String username,String password){

        //判断连接数据库是否成功
        if (username == null || password ==null){
            return false;
        }

        Connection conn = null;
        PreparedStatement pstmt =null;
        ResultSet rs =null;

        try {
            //1.注册驱动,获取连接
            conn = JDBCUtils.getConnection();
            //2.定义sql
            String sql="select * from user where username = ? and password = ?";
            //3.获取执行sql的对象
            pstmt = conn.prepareStatement(sql);

            //给?赋值
            pstmt.setString(1,username);
            pstmt.setString(2,password);

            //4.执行查询,不需要传递sql
            rs = pstmt.executeQuery();
            //5.判断
            return rs.next();

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally{
            JDBCUtils.close(pstmt,conn,rs);
        }

        return false;
    }
  • 运行结果

注意:后期都会用PerparedStatement来完成增删改的所有操作,可以防止SQL注入而且效率也会更高!

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值