`

ibatis中防止sql注入的写法

阅读更多

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

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

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

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

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

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

 

如下3种SQL语句:

[html] view plaincopy
 
  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 #+'%     

 

 

ibatis 常用写法

http://javacrazyer.iteye.com/blog/1135561

分享到:
评论

相关推荐

    通过ibatis解决sql注入问题

    iBatis提供了两种方式来解决SQL注入问题:#写法和$写法。其中,#写法是将参数传递给SQL语句时使用预编译方式,将转义交给了数据库,从而避免了SQL注入问题。 例如,以下代码: ```sql String sql = "SELECT * FROM...

    ibatis常用的sql

    其中`#value#`表示传入的实际参数值,通过这种方式实现了SQL语句的参数化,避免了SQL注入等安全问题。 ### 二、插入操作 接下来是第二条SQL语句: ```xml parameterClass=...

    ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc

    在 iBatis 中,使用动态 SQL 可以生成安全的拼接语句,避免 SQL 注入攻击。例如,在上面的示例代码中,我们使用 `<dynamic>` 元素来定义动态 SQL 语句,在其中使用 `<isNotNull>`、`<isGreaterThan>`、`<isLessThan>...

    SQL.预编译.docx

    SQL预编译是数据库操作中的一个重要概念,...总的来说,SQL预编译是防止SQL注入和提升数据库操作性能的重要手段,尤其是在iBatis等框架中,应优先考虑使用PreparedStatement来编写动态SQL,确保应用的安全性和高效性。

    操作数据库 iBATIS查询

    需要注意的是,如果直接使用`'%$name$%'`这样的写法,可能会导致SQL注入攻击,因此不建议使用。 ##### 1.3 不同数据库中的LIKE查询 不同的数据库系统对于字符串拼接的操作符有所不同。以下是几种常见数据库系统的...

    struts+spring+ibatis框架集合教程

    通过XML或注解方式定义SQL语句,iBatis可以动态地生成和执行SQL,避免了传统的JDBC代码繁琐的模板式写法。它允许开发者直接编写SQL,从而更易于优化和调试数据库查询。 4. 集成应用:Struts、Spring和iBatis的集成...

    基于ssi struts_spring_ibatis 的一个增删 查 更新的小例子

    在本示例中,iBATIS 负责与数据库进行交互,将Java对象转换为SQL语句执行,并将查询结果转换回Java对象。这使得业务逻辑与数据访问层分离,降低了代码复杂性。 **整合过程** - **配置Struts 2**:首先,我们需要在...

    Spring集成MyBatis简单demo

    在Java Web开发中,Spring和MyBatis是两个非常重要的框架。Spring是一个全面的后端...在实际开发中,还可以根据需求进一步优化,如使用Spring Boot简化配置,或者使用MyBatis的Mapper XML文件来定制更复杂的SQL语句。

Global site tag (gtag.js) - Google Analytics