SQL 注入
大扫除时发现了几年前的笔记本,稍微看了下过去的笔记。SQL注入这玩意虽说是很老的问题了,在 mybatis 等优秀的 ORM 框架里面早已经通过预编译技术解决了。但是突然发现自己早已经忘记怎么复现这个问题了。刚好记录下。
Object test1(@Param("query") String query);
Object test2(@Param("query") String query);
Object test3(@Param("query") String query);
Object test4(@Param("query") String query);
<select id="test1" resultType="java.lang.Object">
select s.*
from chs_transform_diag s
where s.diag_code = '${query}'
</select>
<select id="test2" resultType="java.lang.Object">
select s.*
from chs_transform_diag s
where s.diag_code LIKE '%${query}%'
</select>
<select id="test3" resultType="java.lang.Object">
select s.*
from chs_transform_diag s
where s.diag_code = '#{query}'
</select>
<select id="test4" resultType="java.lang.Object">
select s.*
from chs_transform_diag s
where s.diag_code LIKE '#{query}'
</select>
测试参数
1 or 1 = 1
'or'1'='1
当使用 $ 符号时看 xml 文件里面的 sql 有没有拼'
符号,拼了的话就用第二个,基本就这样了。