ibatis 防止SQL注入与占位符的注入
SQL注入:
如果用户执行
select*fromproductwhereid=5
这条语句。其中5是有用户输入的。
SQL注入的含义就是,一些捣蛋用户输入的不是5,而是
5;deletefromorders
那么原来的SQL语句将会变为,
select*fromproductwhereid=5;deletefromorders
在执行完select后,还将删除orders表里的所有记录。
不过庆幸的是,Ibatis使用的是预编译语句PreparedStatements
上述语句会被编译为,
select*fromproductwhereid=?
从而有效防止SQL注入。
不过当你使用$占位符时就要注意了。
#与$区别:
#xxx#代表xxx是属性值,map里面的key或者是你的pojo对象里面的属性,ibatis会自动在它的外面加上引号,表现在sql语句是这样的wherexxx='xxx';
$xxx$则是把xxx作为字符串拼接到你的sql语句中,比如orderbytopicId,语句这样写...orderby#xxx#ibatis就会把他翻译成orderby'topicId'(这样就会报错)语句这样写...orderby$xxx$ibatis就会把他翻译成orderbytopicId
相关推荐
Dullonjiang 2020-01-23
与卿画眉共浮生 2011-06-25
yierxiansheng 2014-06-18
登峰小蚁 2019-12-24
plane 2017-10-19
踩风火轮的乌龟 2019-10-23
pandapanda 2014-05-08
阿泰 2014-07-02
shouen 2016-04-26
whileinsist 2012-04-07
spprogrammer 2018-01-25
Coohx 2017-12-05
AndroidOliver 2012-05-14
BruceWayne 2014-12-02
liubang000 2014-05-30
KOJ 2013-11-26
CXC0 2013-08-28