欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

当 Mybatis 动态指定表名和列名时,如何防止 SQL 注入?-方法 1

最编程 2024-05-04 10:50:30
...

因为表名无法通过 CONCAT() 函数进行拼接,所以只能通过 ${} 直接将表名的字符串替换。

<select id="selectUnionALL" resultType="Dept">
    SELECT * FROM ${tableName} WHERE deptno = #{deptno}
</select>

但是会存在SQL的注入,比如:tableName = dept_01; delete from dept_01; 就会删除所有的数据。

解决方式:通过代码去判断传入的参数是否包含 delete、drop... 等危险操作。

推荐阅读