>>分享JPA、Hibernate、Mybatis对象持久化技术,对《精通JPA与Hibernate:Java对象持久化详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 28700 个阅读者 刷新本主题
 * 贴子主题:  Hibernate使用中防止SQL注入的几种方案 回复文章 点赞(0)  收藏  
作者:日月光华    发表时间:2019-12-31 18:37:37     消息  查看  搜索  好友  邮件  复制  引用

Hibernate使用中防止SQL注入的几种方案

这篇文章主要介绍了Hibernate使用中防止SQL注入的几种方案的相关资料,需要的朋友可以参考下

Hibernate使用中防止SQL注入的几种方案

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

    在获取便利操作的同时,SQL的注入问题也值得我们的密切注意,下面就来谈谈几点如何避免SQL注入:

    1.对参数名称进行绑定:
Query query=session.createQuery(hql);
query.setString(“name”,name);

   2.对参数位置进行邦定:


Query query=session.createQuery(hql);
query.setString(0,name1);
query.setString(1,name2);
...

         3.setParameter()方法:


Query query=session.createQuery(hql);
query.setParameter(“name”,name,Hibernate.STRING);

    4.setProperties()方法:


Entity entity=new Entity();
entity.setXx(“xx”);
entity.setYy(100);
Query query=session.createQuery(“from Entity c where c.xx=:xx and c.yy=:yy ”);
query.setProperties(entity);

    5.HQL拼接方法,这种方式是最常用,而且容易忽视且容易被注入的,通常做法就是对参数的特殊字符进行过滤,推荐大家使用 Spring工具包的StringEscapeUtils.escapeSql()方法对参数进行过滤:


public static void main(String[] args) {
  String str = StringEscapeUtils.escapeSql("'");
  System.out.println(str);
}

  输出结果:''
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 admin 在 2020-01-01 14:43:19 重新编辑]
  Java面向对象编程-->流程控制
  JavaWeb开发-->JSP技术详解(Ⅱ)
  JSP与Hibernate开发-->第一个helloapp应用
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->
  Vue3开发-->组合(Composition)API
  什么是XA事务
  孙卫琴的《精通JPA与Hibernate》的读书笔记:比较JPA的Entit...
  理解事务的四种隔离级别
  用CriteriaBuilder进行动态查询
  EntityManager接口的find()方法和getReference()方法的区别
  盘点Hibernate的值类型映射技巧
  JPA EntityManager find和getReference方法异同
  Session的refresh()方法与事务隔离级别的关系
  Hibernate ORM 5.3.9.Final 发布,常规更新版本
  JPA EntityManager类的常用方法的作用
  Hibernate的八种对象标识符生成策略
  JP注解(标注)和Hibernate注解(标注) 用法详解
  Hibernate的save()和persist()方法的区别
  Hibernate Session和JPA的EntityManager的对应关系
  Hibernate 5的新特性
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。