什么是SQL注入?
是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。
举个例子
比如用户登录
select * from user where (name = ’ username ') and (pw = ’ password ');
username 和 password 字段被恶意填入
username = “1’ OR ‘1’='1”;
与
password = “1’ OR ‘1’='1”;
SQL将会变成这样
select * from user where (name = ‘1’ or ‘1’=‘1’) and (pw = ‘1’ or ‘1’=‘1’);
这样的话SQL的条件就没有什么用了 就会一直成功
mybatis 解决 SQL 注入问题
我们使用 mybatis 编写 SQL 语句时,难免会使用模糊查询的方法,mybatis 提供了两种方式 #{} 和 ${}
#{value}
在预处理时,会把参数部分用一个占位符 ? 替代,其中 value 表示接受输入参数的名称。能有效解决 SQL 注入问题
${}
表示使用拼接字符串,将接受到参数的内容不加任何修饰符拼接在 SQL 中,使用${}拼接 sql,将引起 SQL 注入问题。