jfinal 如何使用in避免sql注入拦截提示

竹林心风 发布于 2017/01/06 11:18
阅读 1K+
收藏 0

@JFinal 你好,想跟你请教个问题:

我在使用mybatis时候,使用in出了问题

<% if(!isEmpty(tracking_no)) {%>
    and TRANSFER_ORDER_NO in (#'$tracking_no$'#)
    <% }else{ %>  
    and 1=2
    <% } %>  
提示:sql injection violation, part alway false condition not allow

请问jfinal中怎么处理这个in语句的问题,现在这个tracking_no是一个多值字段,有1个或多个可能,本来想

传入类似1,2,3这样的字符串,现在被拦截了,请问怎么办好?

加载中
0
JFinal
JFinal
如果你是用的 DruidPlugin,只需要对其进行一些设置,具体设置方法看一下 druid 官方文档,极其容易
竹林心风
竹林心风
at com.jfinal.plugin.activerecord.DbPro.paginate 我用的是ActiveRecordPlugin
护士的小黄瓜
护士的小黄瓜
DruidPlugin 怎么设置缓存
0
护士的小黄瓜
护士的小黄瓜
<% if(!isEmpty(tracking_no)) {%>
    and TRANSFER_ORDER_NO in (#'$tracking_no$'#)
    <% }else{ %>  
    and 1=2

    <% } %>  


mybatis这么写的吗?才一段时间没有mybatis变化太大了吧

littleant
littleant
确实不是mybatis,这是beetl模板语法,这种模式是JFinalUIB中开启的,采用模板渲染SQL,达到类似mybatis的效果,几乎零学习量,可以采用自己任意熟悉的模板引擎
0
littleant
littleant

看来自从JFinalUIB开启了模块渲染SQL的功能之后,用上的人还蛮多,借助模块渲染功能,几十行代码就能做到集中管理和渲染SQL功能,会用模板,几乎是零学习量 

SQL主键传值in操作,做到防注入还是比较容易的,主键只可能是字母数字上下划线,可以采用正则过滤一下,JFinalUIB中就是这样做的

返回顶部
顶部