用了MyBatis就不会发生SQL注入风险吗?
SQL注入问题是很久的事情了,而且现在mybatis,hibernate等框架使用较为成熟了,但是作为一个T新手肯定要对一些本质上的安全问题从新从头梳理一下。
本 文 主 要 说 S Q L 注 入 中 的 S t a t e m e n t 对 象 , P r e p a r e d S t a t e m e n t 对 象 , 和 m y b a t i s 的 注 入 风 险 \color{red}{本文主要说SQL注入中的Statement对象,PreparedStatement对象,和mybatis的注入 风险 ~ } 本文主要说SQL注入中的Statement对象,PreparedStatement对象,和mybatis的注入风险
1.前言
正文开始,首先是环境准备一下,数据库建个表:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL auto_increment COMMENT '主键ID',
`name` varchar(30) default NULL COMMENT '姓名',
`password` varchar(50) default NULL,
`age` int(11) default NULL COMMENT '年龄',
`email` varchar(50) default NULL COMMENT '邮箱',
`create_time` datetime default NULL,
`update_time` datetime default NULL,
`deleted` int(1) default NULL COMMENT '逻辑删除',
`version` int(10) default '1' COMMENT '乐观锁',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1261298512404000775 DEFAULT CHARSET=utf8;
在定义一个mysql的连接工具类:
package jdbc.util;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
// SQL连接工具类
public class JdbcUtil {
public static PreparedStatement pstmt = null ; //这三个对象调用时,
public static Connection connection = null ; // 自己创建
public static ResultSet rs = null ;
public static Statement st =null;
public static final String URL = "jdbc:mysql://localhost:3306/mybatisplus";