原文: http://blog.csdn.net/scorpio3k/article/details/7610973


对于ibaits参数引用可以使用#和$两种写法,其中#写法会采用预编译方式,将转义交给了数据库,不会出现注入问题;如果采用$写法,则相当于拼接字符串,会出现注入问题。

例如,如果属性值为“' or '1'='1 ”,采用#写法没有问题,采用$写法就会有问题。

对于like语句,难免要使用$写法,

1. 对于Oracle可以通过'%'||#param#||'%'避免;

2. 对于MySQL可以通过CONCAT('%',#param#,'%')避免;

3. MSSQL中通过'%'+#param#+'% 。

如下3种SQL语句:

1 mysql: select * from t_user where name like concat('%',#name #,'%')

2

3 oracle: select * from t_user where name like '%'||#name #||'%'

4

5 SQL Server:select * from t_user where name like '%'+#name #+'%

补充:

例子如:

name like  '%'||#name#||'%'    (不会被注入)

等于

name like '%$name$%'(会被注入)

转载于:https://www.cnblogs.com/wdw31210/p/3659133.html

ibatis解决sql注入问题相关推荐

  1. ibatis解决sql注入问题 .

    最近看看了SQL注入的问题,这篇文章解决了ibatis如何防sql注入攻击,值得参考,转自http://blog.csdn.net/scorpio3k/article/details/7610973 ...

  2. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...

    本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...

  3. 使用过滤器解决SQL注入和跨站点脚本编制

    1 SQL注入.盲注 1.1 SQL注入.盲注概述 Web 应用程序通常在后端使用数据库,以与企业数据仓库交互.查询数据库事实上的标准语言是 SQL(各大数据库供应商都有自己的不同版本).Web 应用 ...

  4. python防止sql注入的方法_python解决sql注入以及特殊字符

    python往数据库插入数据, 基础做法是: cur=db.cursor() sql = "INSERT INTO test2(cid, author, content) VALUES (1 ...

  5. mysql5无法注入_MySQL解决SQL注入的另类方法详解_MySQL

    本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...

  6. 解决SQL注入与XSS攻击

    最近接手之前同事的几个项目,公司利用扫描工具进行全项目扫描,发现了部分项目代码存在安全漏洞,所以需要进行项目代码修复以避免有人恶意攻击.这个任务自然而然的就落到我手上.在这里记录一下操作的过程. 扫描 ...

  7. 026_jdbc-mysql-PrepareStatement解决sql注入

    1. 新建一个JDBCPrepareStatement工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件 2. PreparedStatement对象相比较以前的 ...

  8. 关于ibatis的SQL注入。

    使用'$userId$'很有可能造成SQL注入问题,因为原理是替换里面的内容. 而使用#userId#则不会出现问题,这种方式是预编译,和JDBC中的PreparedStatem差不多,可以避免SQL ...

  9. 什么是SQL注入?怎么解决SQL注入?

    SQL注入就是一些攻击者把SQL命令插入到web表单的输入或者页面的url中,欺骗服务器执行恶意的SQL语句.在某些表单中,用户输入的内容直接用来构造或者影响动态SQL命令,或者作为存储过程的输入参数 ...

最新文章

  1. 05. 取SQL分组中的某几行数据
  2. 阿里资深技术专家:在各阶段中,3年经验的程序员应具备哪些技术能力(进阶必看)...
  3. linux printf 刷新,linux下printf中\n刷新缓冲区的疑问(已解决)
  4. 《中国当代乡土小说大系》明年出版
  5. Objective-C学习中对 C语言的扩展
  6. python实现屏幕录制_JavaScript 屏幕录制 API 学习
  7. css 引入的 方式有哪些? link与post有什么区别??
  8. poj_3468 线段树
  9. linux svn与apache,linux下svn与apache整合搭建
  10. 系统架构改进--多系统用户整合
  11. [经验] 系统封装常见问题大总结(非官方)
  12. axis2 jax-ws_Axis2 WS-Security基础知识
  13. Leetcode_24_Swap Nodes in Pairs
  14. Dataframe一列分割成多列
  15. Ubuntu 16.04安装Zimbra邮件服务器
  16. visibilitychange关于浏览器选项卡切换事件
  17. VS对文件编码格式的转换方法
  18. 2020-TMI-Unsupervised Bidirectional Cross-Modality Adaptation via Deeply Synergistic
  19. Android 点击EditText外部区域失去焦点的方法
  20. python幂函数_解决python中的幂函数、指数函数问题

热门文章

  1. LeetCode每日一题 19. 删除链表的倒数第N个节点
  2. MySQL探秘(五):InnoDB锁的类型和状态查询
  3. 字符串相乘(大数相乘)
  4. facenet 中心损失函数(center loss)详解(代码分析)含tf.gather() 和 tf.scatter_sub()函数
  5. 第1章 计算机系统概述小节
  6. 8086汇编-实验8-jmp指令的理解
  7. 交叉驰豫的影响因素_交叉滚子轴承系列吉林薄壁交叉滚子轴承用途博盈
  8. 5G NR QCL准共址详解
  9. svn 分支合并(Subclipse例子)
  10. LDAP 中 CN, OU, DC 的含义