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);
}

输出结果:‘‘

时间: 2024-12-13 00:05:38

Hibernate使用中,防止SQL注入的一些措施的相关文章

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

Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 在获取便利操作的同时,SQL的注入问题也值得我们的密切注意,下面就来谈谈几点如何避免SQL注入:    1.对参数名称进行绑定: 1 2 Query query=session.createQuery(hql); query.setString(“name”,name);        2.

Hibernate一些防止SQL注入的方式

Hibernate在操作数据库的时候,有以下几种方法来防止SQL注入,大家可以一起学习一下. 1.对参数名称进行绑定: Query query=session.createQuery(hql); query.setString(“username”,name); 2.对参数位置进行邦定: Query query=session.createQuery(hql); query.setString(0,username1); query.setString(1,username2); 3.setPa

PHP 关于SQL注入的防范措施。

最近在使用框架的时候还是有点不安,不知道框架的设计者有没有考虑到SQL-Injection的问题,我在顶层需不需要做一些必要的过滤等等,由 此我特意的去StackOverflow看了下,真是获益良多,然后我去看了下框架的DB库的内部方法,然后就比较安心了.分享下国内外PHP程序员在处 理SQL-Injection的一些方案. 国外普遍都推荐,只要你是使用查询都应该做到两点:1.prepared statements(准备好的声明) 2.parameterized queries (参数化的查询请

Java防止SQL注入

http://blog.csdn.net/abc19900828/article/details/39501349 SQL 注入简介:        SQL注入是最常见的攻击方式之一,它不是利用操作系统或其它系统的漏洞来实现攻击的,而是程序员因为没有做好判断,被不法用户钻了SQL的空子,下面我们先来看下什么是SQL注入: 比如在一个登陆界面,要求用户输入用户名和密码: 用户名:     ' or 1=1 -- 密     码: 点登陆,如若没有做特殊处理,而只是一条带条件的查询语句如: Stri

ref:Java防止SQL注入

ref:https://blog.csdn.net/abc19900828/article/details/39501349 小结:spring采用JdbcTemplate来操作sql,一般不要自行拼接sql,而是使用参数化的构造方式,则不会存在注入问题. SQL 注入简介:        SQL注入是最常见的攻击方式之一,它不是利用操作系统或其它系统的漏洞来实现攻击的,而是程序员因为没有做好判断,被不法用户钻了SQL的空子,下面我们先来看下什么是SQL注入: 比如在一个登陆界面,要求用户输入用

网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒

前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. web开发初学者往往会忽视一些常见的漏洞, 比如SQL注入攻击, XSS攻击. 本文将简述SQL注入攻击的原理, 并分享下关卡设计, 其在打开潘多拉魔盒的情况下, 又能很好地限制危害. 效果展示: 先打下广告: 网页闯关游戏入口(请狠狠地点击我, ^_^). 本文的想法实施于第十一关--健忘的教授. 很直接的呈现一个登陆对话框, 考验玩家

谈谈PHP网站的防SQL注入

SQL(Structured Query Language)即结构化查询语言.SQL 注入,就是把 SQL 命令插入到 Web 表单的输入域或页面请求参数的查询字符串中,在 Web表单向 Web 服务器提交 GET 或 POST 请求时,如果服务器端未严格验证参数的有效性和合法性,将导致数据库服务器执行恶意的 SQL 命令. SQL 注入攻击的过程: (1)判断 Web 应用是否可以进行 SQL 注入. (2)寻找 SQL 注入点. (3)猜解用户名和密码. (4)寻找 Web 系统管理后台入口

Hibernate 关于执行sql查询语句(转)

原文  http://www.yshjava.cn/post/543.html 主题 SQLHibernate Hibernate对原生SQL查询的支持和控制是通过SQLQuery接口实现的.通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQuery是一个接口,在Hibernate4.2.2之前,默认返回的是SQLQuery的实现类--SQLQueryImpl对象,在下文中出现的SQLQuery如非注明,都是指该子类)对象来进行原生SQL查询: session.creat

使用SQLQuery 在Hibernate中使用sql语句

session.createSQLQuery.转载 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询. 1.标量查询(Scalar queries) 最基本的SQL查询就是获得一个标量(数值)的列表. sess.createSQLQuery("SELECT * FROM CATS").list();sess.createSQLQuery("SELECT ID,