今天安全工程师在Review产品扫描记录的时候,谈到 Ibatis中$与#使用,我记录一下作为web开发的注意事项。
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:
select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。
select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table where id = '$id$'
本文介绍了Ibatis中SQL参数引用符号$与#的区别。#支持类型匹配,能有效防止SQL注入;而$则直接替换变量,可能引入安全隐患。文章通过示例说明了不同场景下两者的正确使用方式。
787

被折叠的 条评论
为什么被折叠?



