JavaWeb开发思维导图之——JDBC注入攻击(35)
一 概述
- 概念
- sql注入攻击解决
二 内容详情
2.1 概念
- 什么是SQL注入攻击?利用sql语句的漏洞来对系统进行攻击
- SQL注入攻击演示?1-输入数据库不存在用户名和密码无法登录;2-不存在用户名后拼接 or '1=1',查询结果成立,登录成功;3-查询语句:select * from user where loginname='aaa' and password='bbb' or '1=1';
- SQL注入攻击的原理:1-按照正常道理来说,在密码输入的所有内容,都应认为是密码的组成部分;2-但是现在Statement对象在执行sql语句时,将密码的一部分内容当作查询条件来执行了
2.2 sql注入攻击解决
1-PreparedStatement预编译执行者对象
- 在执行sql语句之前,将sql语句进行提前编译。明确sql语句格式后不会变了。剩余的都是参数
- SQL语句中的参数使用?作为占位符
2-为?占位符赋值的方法
- Xxx: 数据类型
- 参数:1-参数1:?的位置编号(编号从1开始)、2-参数2: ?的实际参数
- 示例:String sql="delete from user where name=?";、pstm=conn.prepareStatement(sql);
3-执行SQL语句
- 执行insert、update、delete语句: int executeUpdate();
- 执行select语句: ResultSet executeQuery();