SQL注入
数据交互中,当前端数据传入后端处理时,没有进行严格判断,恶意代码进入到了sql语句中执行,导致数据库受灾
恶意用户通过在表单中填写包含sql关键字的数据来使数据库执行非常规代码的过程
sql注入攻击的总体思路
- 寻找到sql注入的位置
- 判断服务器类型和后台数据库类型
- 针对不同的服务器你和数据库特点进行sql注入
预防sql注入
-
检查变量数据类型和格式
-
过滤特殊符号
对于无法固定格式的变量,一定要进行特殊符号过滤或转义处理
-
绑定变量,使用预编译语句(preparedStatements将sql语句模板化或参数化)
在sql执行之前,将sql语句发送给书库进行预编译,执行时,直接使用编译好的sql
预编译语句防止sql注入的原因:将sql语句参数化,语句是语句,参数是参数,
mybatis防止sql注入
#和$ 能用#不用$
mybatis作为一个半自动持久型框架,sql语句需要自己写,这时需要防止sql注入.mybatis底层是preparedstatement
支持预编译,