`

【转】ibatis like 用法,各数据库的安全拼接方法

阅读更多

iBatis解决sql注入

(1) ibatis xml配置:下面的写法只是简单的转义 namelike '%$name$%'

(2) 这时会导致sql注入问题,比如参数name传进一个单引号“'”,生成的sql语句会是:name like '%'%'

(3) 解决方法是利用字符串连接的方式来构成sql语句 name like '%'||'#name#'||'%'

(4) 这样参数都会经过预编译,就不会发生sql注入问题了。

(5) #与$区别:

#xxx# 代表xxx是属性值,map里面的key或者是你的pojo对象里面的属性,ibatis会自动在它的外面加上引号,表现在sql语句是这样的 where xxx = 'xxx' ;

$xxx$ 则是把xxx作为字符串拼接到你的sql语句中, 比如 order by topicId , 语句这样写 ... order by #xxx#,ibatis 就会把他翻译成 order by 'topicId' (这样就会报错) 语句这样写 ... order by $xxx$ibatis 就会把他翻译成 order by topicId

 
SELECT *   FROM user  WHERE username like '%$username$%'  的安全写法

Sql代码

SELECT *         FROM user        WHERE username like '%'  || #username# || '%'  

SELECT * FROM user WHERE username like '%' || #username# || '%' 

       其实上面的语句是针对Oracle 的,对于不同数据字符串连接符不一样。现列举mysql和SQLServer如下:

     

Mysql

Sql代码
SELECT *         FROM user        WHERE username like CONCAT('%', #username#, '%')  

SQLServer:

Sql代码
SELECT *         FROM user        WHERE username like '%' + #username# +  '%'  

-----------------------------------------------------------------------------------------------------------------------------

      关于数据库字符串连接符简单列举我使用过的一些数据库如下:

 

Oracle SQLServer Mysql DB2
|| 或 CONCAT() + CONCAT() || 或 CONCAT()

 

 

转自:http://blog.csdn.net/csdnbenbenchong/article/details/7105939

分享到:
评论

相关推荐

    操作数据库 iBATIS查询

    在iBATIS中,可以使用类似的方法来实现这样的查询。一种常见的错误写法是直接将`%`包含在SQL字符串中,如下所示: ```xml SELECT * FROM t_stu WHERE s_name LIKE #name# ``` 这种方式的问题在于,当调用查询时...

    常用ibatis配置

    标题中提到的“常用ibatis配置”指的是在使用iBatis这一数据持久层框架中,常见的配置用法和技术点。iBatis(现称为MyBatis)是一个流行的Java持久层框架,它通过使用XML或注解的方式,将SQL语句与对象进行映射,...

    ibatis教程_查询指定id的单个对象

    本教程聚焦于如何使用Ibatis查询指定ID的单个对象,这对于日常的数据检索工作尤为重要。 首先,理解Ibatis的基本架构。Ibatis不是一个完整的ORM(对象关系映射)框架,而是介于SQL和Java之间的桥梁,允许开发者编写...

    ibatis的动态查询

    以上内容详细介绍了 ibatis 中动态查询的基本原理及具体实现方法,包括模糊查询、多条件组合查询以及使用 Map 作为参数的高级用法。这些知识点对于深入理解 ibatis 的动态查询机制非常重要,可以帮助开发者更高效地...

    Mybatis 中 Oracle 的拼接模糊查询及用法详解

    本文将详细介绍 Mybatis 中 Oracle 的拼接模糊查询及用法,旨在帮助开发者更好地使用 Mybatis 实现 Oracle 数据库的查询操作。 一、拼接模糊查询的正确写法 在 Oracle 中,拼接模糊查询的正确写法是使用 `concat` ...

    通过ibatis解决sql注入问题

    iBatis解决SQL注入问题 iBatis是一个流行的持久层框架,广泛应用于Java企业级开发中。然而,在使用iBatis时,开发人员...同时,开发人员也需要注意在使用iBatis时,遵守安全编码实践,避免使用不安全的参数传递方式。

    IBatis3.1 实例

    在本实例中,我们将深入探讨IBatis3.1版本的核心特性、配置、使用方法以及常见问题。 ### 一、IBatis3.1概述 IBatis3.1是该框架的一个稳定版本,主要改进了SQL映射文件的结构,增强了动态SQL的功能,并且提供了更...

    IBAITS学习总结

    **IBatis 学习总结** **一、简介** IBatis 是一个优秀的持久层框架,它允许开发者将 SQL 语句直接写在配置...通过阅读提供的 "ibaits学习总结.docx" 和 "IBAITS学习总结" 文件,可以深入理解其具体使用方法和案例。

    高级软件人才培训专家-day09-Mybatis

    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl ``` 以上就是关于 MyBatis 的基础操作及其相关知识点的详细介绍。这些基础知识对于初学者来说非常重要,能够帮助他们快速上手 MyBatis...

    mybatis(入门了解)

    ### MyBatis 入门详解 #### 一、MyBatis 概述 **MyBatis** 是一款优秀的...以上是关于 MyBatis 的基本介绍和使用方法,通过这些知识点的学习,可以帮助初学者快速掌握 MyBatis 的使用技巧,并能够应用于实际项目中。

Global site tag (gtag.js) - Google Analytics