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 有没有拼 '
符号,拼了的话就用第二个,基本就这样了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律