mybatis 防止sql注入

sql注入会发生什么?

sql注入后,api会返回数据库中所有的数据,相当于拖库一样的效果。

sql注入如何发生?

比如你后台想模糊查询name 有a的user数据。你可能会这样写。
select * from user where name like '%${search}%
当然,如果用户友好,直接传值 search=a,那肯定完事大吉,执行的sql如下:
select * from user where name like '%a%
万一,用户很调皮,传的是这样的search = ' or 1=1 or 1 = ',执行的sql就变成下面:
select * from user where name like '%' or 1=1 or 1 = '%'
可以把两条sql在数据库执行下就能发现问题了。

解决办法?

所以为了防止sql注入,建议使用#{}获取变量。
类似上面的语句可以改成这样子:
select * from user where name like concat('%',#{search},'%')

你可能感兴趣的:(mybatis 防止sql注入)