有关durid 出现sql injection exception的问题,说明是该有的值意外空了,导致和原有的SQL所表达的意思相悖,现象如下:
这里用的是Mybatis框架
sql语句:
update user
<set>
<if test="status!=null and status!=''">
status=#{status}
</if>
</set>
where useruuid=#{useruuid}
页面中请求用了ajax方式
function save(num){
var status = num=="2"?"3":num=="4"?"5":"";
$.post("/common/commonupdate",{"status",status},function(data){
alert(data.message);
refresh();
})
}
这里当status为空字符串时,druid框架就会拦截,并抛出sqj injection exception,sql注入异常,这时的SQL就变为了
update user where useruuid=? 曲解了整个sql要表达的意思,故durid认为是恶意的sql注入异常
总结:
结合上面的例子,可总结出,当我们遇到durid框架抛出的sql注入异常时,通常情况下都是因为该传入的参数变为空,导致整个sql改变了他原有的意思.以此记录,排坑日记