解决SQL语句注入的安全漏洞

解决SQL语句注入的安全漏洞

  1. SQL注入是最简单的一种攻击
  2. 利用程序与服务器交互的过程(有输入的交互,注册,登陆等),将特殊字符传到数据库中,对数据库进行操作,就造成了SQL注入,现在SQL注入一般是没有机会的,因为这种方式很古老
  3. 这里使用PreparedStatement来解决SQL语句的注入问题
import java.sql.*;
public class JdbcTest{
    /*解决sql语句注入的安全漏洞*/
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //获取链接
            conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/db?serverTimezone=UTC", "root", "root");
            //获取数据库操作对象(这里先定义sql语句框架)
            String sql = "select *from user where id=?";
            ps = conn.prepareStatement(sql);
            //这里先把sql语句框架进行预编译(然后给予赋值从1开始)
            ps.setString(1, "2");
            //执行sql语句(这个时候后面括号内不需要写sql)
            rs = ps.executeQuery();
            //处理查询结果集
            while (rs.next()) {
                String id = rs.getString("id");
                String user = rs.getString("user");
                System.out.println(id + " " + user);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//释放资源
            try {
                if (rs != null) {
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (ps != null) {
                    ps.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值