hibernatetemplate查询会造成sql注入吗

时间:2021-10-16 00:05:55
String hql= "from bean.User u where u.name=? and u.password=?"
  this.getHibernateTemplate().find(hql, new String[]{"test", "123"});


 String queryString = "select count(*) from bean.User u where u.name=:myName and u.password=:myPassword"; 
  String[] paramName= new String[]{"myName", "myPassword"};
  String[] value= new String[]{"xiyue", "123"};
  this.getHibernateTemplate().findByNamedParam(queryString, paramName, value);

会有sql注入漏洞吗?

11 个解决方案

#1


sql语句用字符串拼接的方式会有sql注入风险

#2


这个没试过,应该是将sql发过去执行的,你自己试一下看看

#3


还是看你的HQL怎么写  如果HQL中有拼SQL的  还是有可能  如果都是参数的  那不会

#4


引用 1 楼 huxiweng 的回复:
sql语句用字符串拼接的方式会有sql注入风险

用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

#5


引用 3 楼 sunbo624 的回复:
还是看你的HQL怎么写  如果HQL中有拼SQL的  还是有可能  如果都是参数的  那不会
用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

#6


引用 3 楼 sunbo624 的回复:
还是看你的HQL怎么写  如果HQL中有拼SQL的  还是有可能  如果都是参数的  那不会
用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

#7


引用 4 楼 c466254931 的回复:
Quote: 引用 1 楼 huxiweng 的回复:

sql语句用字符串拼接的方式会有sql注入风险

用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

这样算安全的

#8


目测你这两种方式不会造成注入漏洞

#9


引用 8 楼 sd__q 的回复:
目测你这两种方式不会造成注入漏洞

String hql = "select * from table where username="+username+"and password = "+password;
hibernatetemplate.find(hql);
这种查询应该就会出现sql注入漏洞对吗?

#10


引用 9 楼 c466254931 的回复:
Quote: 引用 8 楼 sd__q 的回复:

目测你这两种方式不会造成注入漏洞

String hql = "select * from table where username="+username+"and password = "+password;
hibernatetemplate.find(hql);
这种查询应该就会出现sql注入漏洞对吗?
恩呢,这种就会有注入的危险。

#11


hibernate一般不会造成sql注入

#1


sql语句用字符串拼接的方式会有sql注入风险

#2


这个没试过,应该是将sql发过去执行的,你自己试一下看看

#3


还是看你的HQL怎么写  如果HQL中有拼SQL的  还是有可能  如果都是参数的  那不会

#4


引用 1 楼 huxiweng 的回复:
sql语句用字符串拼接的方式会有sql注入风险

用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

#5


引用 3 楼 sunbo624 的回复:
还是看你的HQL怎么写  如果HQL中有拼SQL的  还是有可能  如果都是参数的  那不会
用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

#6


引用 3 楼 sunbo624 的回复:
还是看你的HQL怎么写  如果HQL中有拼SQL的  还是有可能  如果都是参数的  那不会
用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

#7


引用 4 楼 c466254931 的回复:
Quote: 引用 1 楼 huxiweng 的回复:

sql语句用字符串拼接的方式会有sql注入风险

用?或者:字段来赋值字段也会吗?
如:this.getHibernateTemplate().find("from bean.User u where u.name=?", "test");
  或模糊查询:this.getHibernateTemplate().find("from bean.User u where u.name like ?", "%test%");

这样算安全的

#8


目测你这两种方式不会造成注入漏洞

#9


引用 8 楼 sd__q 的回复:
目测你这两种方式不会造成注入漏洞

String hql = "select * from table where username="+username+"and password = "+password;
hibernatetemplate.find(hql);
这种查询应该就会出现sql注入漏洞对吗?

#10


引用 9 楼 c466254931 的回复:
Quote: 引用 8 楼 sd__q 的回复:

目测你这两种方式不会造成注入漏洞

String hql = "select * from table where username="+username+"and password = "+password;
hibernatetemplate.find(hql);
这种查询应该就会出现sql注入漏洞对吗?
恩呢,这种就会有注入的危险。

#11


hibernate一般不会造成sql注入

相关文章