下面这段代码,有sql注入的风险吗? 请介绍详细些.

String hql = "from AdminUser adminUser where adminUser.adminCode=? and adminUser.loginPswd=?";
List list = getHibernateTemplate().find(hql,new Object[] { adminUserCode, loginPswd });
最新回答
欲往

2022-11-11 15:07:54

首先,你的写法是可行的。
其次,Hibernate 虽然是兆宴面向对象的查询,但是最终还是会被解释成SQL进入JDBC,如果你写的不小心,同样会被注入的。尤其不能用字符串拼接方式生成hql.
幸运的是有一个简单的机中虚制可以避免注入卖猜燃风险: JDBC在绑定参数时有一个安全机制,它可以准确的将那些需要转义的字符进行转义(escape),参数里面的控制字符被它转义了。
所以你可以放心使用,另外推荐你看一下《Hibernate In Action》
葬婲

2023-05-19 16:27:17

这样稿蠢写是正确的、
String hql = "from AdminUser adminUser where adminUser.adminCode= adminUserCode and adminUser.loginPswd= loginPswd";改成这样的键闹陪话绝弯洞对的有风险、