代码审计看到 系统采用SSI架构,之前没有正式这样运用过,看看实例,记录下ibatis一些注意项:
一、# 和 $符号的区别
1.#把传入的数据当作字符串处理,相当于jdbc预处理中的?,这样,在很大程度上能防止SQL注入
2.$把传入的数据直接生成在SQL里,无法防止SQL注入
3.能用#的就别用$符号
二、iterator
<isPropertyAvailable property="marketIdList">
<isNotNull property="marketIdList" prepend=" and marketId in ">
<iterate property="marketIdList" conjunction="," close=")" open="(">
#marketIdList[]#
</iterate>
</isNotNull>
</isPropertyAvailable>
注意 iterate 的property属性,虽然你上面的isNotNull什么的都有这句,但这里一定要写清楚,否则ibatis会找不到你的list的
三、<![CDATA[ ]]>
将特殊字符进行转义,防止SQL语句异常终端。注意使用范围 尽可能小。