首页 热点资讯 义务教育 高等教育 出国留学 考研考公

mybatis 为什么可以防止sql注入

发布网友 发布时间:2022-04-23 12:38

我来回答

1个回答

热心网友 时间:2022-04-08 09:24

因为在mybatis中,”${xxx}”这样格式的参数会直接参与sql编译,从而不能避免注入攻击。但涉及到动态表名和列名时,只能使用“${xxx}”这样的参数格式,所以,这样的参数需要程序开发者在代码中手工进行处理来防止注入。

#xxx# 代表xxx是属性值,map里面的key或者是你的pojo对象里面的属性, ibatis会自动在它的外面加上引号,表现在sql语句是这样的 where xxx = 'xxx' ;

$xxx$ 则是把xxx作为字符串拼接到sql语句中, 比如 order by topicId , 语句这样写 ... order by #xxx# ibatis 就会翻译成order by 'topicId' (这样就会报错) 语句这样写 ... order by $xxx$ ibatis 就会翻译成 order by topicId

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com