设为首页 收藏本站
查看: 687|回复: 0

[经验分享] Sql注入

[复制链接]

尚未签到

发表于 2016-11-6 09:01:08 | 显示全部楼层 |阅读模式
为了防止SQL注入,iBatis模糊查询时也要避免使用$$来进行传值。下面是三个不同数据库的ibatis的模糊查询传值。
Sql代码  
mysql: select * from stu where name like concat('%',#name #,'%')   
   
oracle: select * from stu where name like '%'||#name #||'%'   
   
SQL Server:select * from stu where name like '%'+#name #+'%     


如:
Sql代码  
<!-- 用途:小二后台查询活动的数目 -->  
    <!-- 频率:1000/天 -->  
    <!-- 维护:刘飞 -->  
    <select id="countActivitySearch" resultClass="java.lang.Long" parameterClass="actDO">  
        <![CDATA[  
            select count(id) from activity   
            ]]>  
         
        <dynamic prepend="WHERE">  
            <isNotNull prepend=" AND " property="name">  
                name LIKE CONCAT('%', #name#, '%')  
            </isNotNull>  
            <isNotNull prepend=" AND "  property="itemId">  
                itemId = #itemId#  
            </isNotNull>  
            <isNotNull prepend=" AND " property="itemName">  
                itemName LIKE CONCAT('%', #itemName#, '%')  
            </isNotNull>           
            <isNotNull prepend=" AND " property="status">  
                status = #status#  
            </isNotNull>   
            <isNotNull prepend=" AND " property="actStatus">  
                actStatus = #actStatus#  
            </isNotNull>            
            <isNotNull prepend=" AND " property="domain">  
                domain LIKE CONCAT('%', #domain#, '%')  
            </isNotNull>  
        </dynamic>  
         
    </select>  
      
    <!-- 用途:小二后台查询活动的列表 -->  
    <!-- 频率:1000/天 -->  
    <!-- 维护:刘飞 -->  
    <select id="searchActivityForList" resultMap="actResult" parameterClass="actDO">  
        <![CDATA[  
            select * from activity   
        ]]>  
         
        <dynamic prepend="WHERE">  
            <isNotNull prepend=" AND " property="name">  
                name LIKE CONCAT('%', #name#, '%')  
            </isNotNull>  
            <isNotNull prepend=" AND "  property="itemId">  
                itemId = #itemId#  
            </isNotNull>  
            <isNotNull prepend=" AND " property="itemName">  
                itemName LIKE CONCAT('%', #itemName#, '%')  
            </isNotNull>           
            <isNotNull prepend=" AND " property="status">  
                status = #status#  
            </isNotNull>   
            <isNotNull prepend=" AND " property="actStatus">  
                actStatus = #actStatus#  
            </isNotNull>            
            <isNotNull prepend=" AND " property="domain">  
                domain LIKE CONCAT('%', #domain#, '%')  
            </isNotNull>  
        </dynamic>  
         
        <![CDATA[  
            order by starttime desc, createtime desc  
            limit   
                #startRow#, #perPageSize#     
        ]]>  
    </select>  

不要这样来写:
Sql代码  
<select id="searchActivityForCount" resultClass="java.lang.Long" >  
        <![CDATA[  
            select count(*) from activity  
            ]]>  
         
        <dynamic prepend="WHERE">  
            <isNotNull prepend=" AND " property="name">  
                name LIKE '%$name$%'  
            </isNotNull>  
            <isNotNull prepend=" AND " property="itemId">  
                itemId LIKE '%$itemId$%'  
            </isNotNull>  
            <isNotNull prepend=" AND " property="itemName">  
                itemName LIKE '%$itemName$%'  
            </isNotNull>           
            <isNotNull prepend=" AND " property="status">  
                status = #status#  
            </isNotNull>   
            <isNotNull prepend=" AND " property="actStatus">  
                actStatus = #actStatus#  
            </isNotNull>            
            <isNotNull prepend=" AND " property="domain">  
                domain LIKE '%$domain$%'  
            </isNotNull>  
        </dynamic>  
    </select>  
      
    <select id="searchActivityForList" resultMap="actResult" parameterClass="actDO">  
        <![CDATA[  
            select * from activity   
        ]]>  
         
        <dynamic prepend="WHERE">  
            <isNotNull prepend=" AND " property="name">  
                name LIKE '%$name$%'  
            </isNotNull>  
            <isNotNull prepend=" AND " property="itemId">  
                itemId LIKE '%$itemId$%'  
            </isNotNull>  
            <isNotNull prepend=" AND " property="itemName">  
                itemName LIKE '%$itemName$%'  
            </isNotNull>           
            <isNotNull prepend=" AND " property="status">  
                status = #status#  
            </isNotNull>   
            <isNotNull prepend=" AND " property="actStatus">  
                actStatus = #actStatus#  
            </isNotNull>            
            <isNotNull prepend=" AND " property="domain">  
                domain LIKE '%$domain$%'  
            </isNotNull>  
        </dynamic>  
         
        <![CDATA[  
            order by starttime desc, createtime desc  
            limit   
                #startRow#, #perPageSize#     
        ]]>  
    </select>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-296395-1-1.html 上篇帖子: 怎样识别SQL Server 2000是否为SP4版本(附上驱动包下载) 下篇帖子: SQL Server 2008实现"编辑所有行"和"返回所有行"的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表