【Mybatis的orderby引起的sql注入】sql中两种传参数的方式:
#{param} 这种是经过预编译的,不会有sql注入
${param} 这种仅仅取变量的值,可以有sql注入
但是在orderby中之能用${param},用#会导致排序不生效。
例如,传入值为name时
用 SELECT * FROM STUDENT ORDER BY #{orderby}会变成:
SELECT * FROM STUDENT ORDER BY "name"
用 SELECT * FROM STUDENT ORDER BY ${orderby}会变成:
SELECT * FROM STUDENT ORDER BY name
常见的解决orderBy的sql注入的方式:
手动过滤,添加白名单
其它用到$符号的场景:
当数据库分表的时候,表格很多,不会把表名写死,改用$传入
推荐阅读
- mybatis|SSM框架整合(Spring+SpringMVC+Mybatis)
- 框架|持久层框架——Mybatis知识点总结
- mybatis|手撕MybatisPlus分页原理
- 程序员|全网已破千万点击,MyBatis源码(配置、映射文件SQL执行过程等等)
- java|Java教程(手撕MybatisPlus分页原理)
- java|Mybatis------代理开发
- java|【纯享】剑指大厂,22年最强阿里JAVA手册
- java|Nginx 限流的天坑
- springboot|搭建一个springboot+templates+mysql+mybatisplus代码生成器简单框架