如何避免 sql 注入?
1、什么是sql注入?
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。
2、怎样防止sql注入?
(1)使用PreparedStatement预编译sql,避免sql拼接。
预编译 SQL(Java 中使用 PreparedStatement),参数化查询方式,避免 SQL 拼接
(2)Mybatis防止sql注入。
MyBatis是一款优秀的持久层框架,在防止sql注入方面,mybatis启用了预编译功能,在所有的SQL执行前,都会先将SQL发送给数据库进行编译,执行时,直接替换占位符"?"即可。
MyBatis在处理传参的时候,有两种处理方式,一种是#,另一种是$;
#{XXX} ,将传入参数都当成一个字符串,会自动加双引号,已经经过预编译,安全性高,能很大程度上防止sql注入;
${XXX} ,该方式则会直接将参数嵌入sql语句,未经过预编译,安全性低,无法防止sql注入;