Hibernate
是否警惕SQL injection attack
?如果我正在使用hibernate那么我是否完全免受SQL注入攻击?我听说使用Hibernate
执行使用用户输入构建的dynamic SQL statement
可以允许攻击者修改语句的含义或执行任意SQL commands
。
答案 0 :(得分:15)
Hibernate是否可以防范SQL注入攻击?
不,它不保护错误编写的,所以在编写查询时需要小心。始终使用预准备的语句样式,例如考虑以下 HQL 查询
String query1 = "select * from MyBean where id = "+ id;
String query2 = "select * from MyBean where id = :id";
query1 **仍然容易受到** SQL注入的影响,因为 query2 不是。
所以简而言之, hibernate为您提供了许多方法来保护自己免受SQL Injection attacks的攻击。</ strong>
答案 1 :(得分:1)
1 HQL中的位置参数
Query hqlQuery = session.createQuery("from Orders as orders where orders.id = ?");
List results = hqlQuery.setString(0, "123-ADB-567-QTWYTFDL").list();
2个 HQL中的命名参数
Query hqlQuery = session.createQuery("from Employees as emp where emp.incentive > :incentive");
List results = hqlQuery.setLong("incentive", new Long(10000)).list();