一、SQL注入简介
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。
二、防止SQL注入攻击的方法
1.(简单又有效的方法)PreparedStatement JS中
原理:sql注入只对sql语句的准备(编译)过程有破坏作用
而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,
而不再对sql语句进行解析,准备,因此也就避免了sql注入问题.
2. MyBatis中防止sql注入
# 将sql进行预编译"where id = ?",然后底层再使用PreparedStatement的set方法进行
参数设置。
$ 将传入的数据直接将参数拼接在sql中,比如 “where id = 123”。
因此,#与$相比,#可以很大程度的防止sql注入,因为对sql做了预编译处理,
所以在使用中一般使用#{}方式。
where id = #{id,jdbcType=INTEGER}
where id = ${id,jdbcType=INTEGER}