永发信息网

mybatis在传参时,为什么#能够有效的防止sql注入

答案:1  悬赏:70  手机版
解决时间 2021-04-05 13:48
mybatis在传参时,为什么#能够有效的防止sql注入
最佳答案
因为在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
#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
  
2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id
所以说#方式能够很大程度防止sql注入。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
与大盘走势相反的杠杆基金有哪些
求网游小说主线任务?谢谢
________livesin________andspeaks__
我因蛀牙做了牙髓失活术,可是都一天一夜了,可
妈妈对女儿结婚的祝福,一位母亲写给女儿的信
贝壳盘八个圆盘一个,贝壳盘能摆成空心圆形,
女性也可能得疝气吗
求GTA SA里跑马场的位置,要图
insufficiency是什么意思
下列词语中划线字的读音与所给字音全相同的一
我是个纯洁的女生,我叫上官紫雪
古诗是现代诗的救星阅读答案
朋友说我唱歌有磁性是什么意思 我是女生 而且
三星GT-i8262d怎么把软件装到SD卡?
有看过电影“闰年”的吗
推荐资讯
小米手机戴上铁三角耳机低音量听歌有一种沙沙
女孩请进帮我回答一下这个问题 , 一个我喜欢
亮点给力大试卷三年级上数学期中测试卷(a)答
EMS从石家庄到浙江嘉兴(桐乡)要多久额?
单选题Zhang Hong is said_______
(1)用化学用语填空:氖气________铁离子___
怎样快速矫正视力
广州好还是杭州好点?
兰亭集序的书法赏析
有在乐运驾校学过车的吗
看病人的祝福语有些,送病人的祝福语l 四言八
小米云相册还原不了
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?