>>分享JPA、Hibernate、Mybatis对象持久化技术,对《精通JPA与Hibernate:Java对象持久化详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23258 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->Lambda表达式
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->第一个helloapp应用
  Java网络编程-->ServerSocket用法详解
  精通Spring-->创建综合购物网站应用
  Vue3开发-->Vue简介
  JPA和事务管理
  JPA EntityManager详解
  十分钟入门 JPA
  EntityTransaction 与UserTransaction的区别
  征求意见:正在写一本新书《精通JPA与Hibernate》
  Hibernate的Enver用法指南
  Session的refresh()方法与事务隔离级别的关系
  好书推荐:《精通Hibernate:Java对象持久化技术详解》
  JPA EntityManager类的常用方法的作用
  JPQL与SQL的区别
  JPA (Java Persistence API)2.2 的一些新特性
  Hibernate 5的新特性
  hibernate 5的二级缓存案例讲解
  解决运行Hibernate时的NoClassDefFoundError: javax/xml/bin...
  精典:Hibernate5官方用户手册 中文版免费下载
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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