spring / hibernate如何保证防止SQL注入以及如何在内部处理?

时间:2016-10-14 04:44:15

标签: spring orm sql-injection

我知道spring和hibernate都是从SQL注入中获得的。

  1. 但是我怎么知道我的应用程序是免受SQL注入攻击的?
  2. 任何ORM工具如何处理SQL注入
  3. 提前感谢..

1 个答案:

答案 0 :(得分:3)

如果正确使用API​​,Hibernate会提供SQL注入的安全性。

来自:https://www.owasp.org/index.php/Hibernate#A_note_about_SQL_injection

  

关于SQL注入的说明

     

由于这是热门话题,我现在将讨论,但稍后会详细讨论。

     
      
  • Hibernate不会授予对SQL注入的免疫力,可以随意滥用API。
  •   
  • HQL(Hibernates SQL的子集)没有什么特别之处可以让它更容易受到影响。
  •   
  • createQuery(String query)和createSQLQuery(String query)等函数创建一个Query对象,该对象将在调用commit()时执行。如果查询字符串被污染,则表示您已进行SQL注入。稍后将介绍这些功能的详细信息。
  •   

始终使用PreparedStatement来阻止SQL注入,它是JDBC API的一部分,而Hibernate本身使用此API see

例如:

String query1 = "select * from MyBean where id = "+ id;//Not secure
String query2 = "select * from MyBean where id = :id";//Secure

关于此主题的有用文章:http://software-security.sans.org/developer-how-to/fix-sql-injection-in-java-hibernate