[英]SQL Injection through Hibernate-Criteria & Session.save(object)
我非常確定Criteria-Object將創建安全的HSQL。
你必須小心Expression對象。 您可以在那里創建SQL注入。 但是看一下生成的SQL: Hibernate show real SQL
編輯:除非Hibernate中存在巨大的錯誤,否則您無需確保在保存之前對String
進行轉義。 Hibernate使用預處理語句。 所以沒有字符串連接,也沒有Hibernate會話的SQL注入。
在使用Hibernate讀取輸出后,您可能必須轉義輸出。 例如:您有一個實體用戶
class User{
String name;
}
並且您調用用戶“'或1 = 1; DROP DATABASE用戶; - ”該字符串將存儲在數據庫中。 如果您使用Criterion對象查詢用戶,您將找到他(刪除數據庫)。 如果使用Expression對象查詢User,則可以刪除數據庫(如果您隱藏了Strings)。
如果將用戶的名稱輸出為HTML,則必須轉義輸出。 否則,名為"/><script>evilJavascript()</script>
將對您的應用程序不利。
編輯2:看看這里: https : //www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
Criteria不允許你自己編寫易受攻擊的SQL / HQL,因此SQL注入應該沒有任何問題(除非Hibernate本身存在錯誤)。
編輯 :
正如@ckuetbach所指出的,Criteria實際上允許您使用Expression.sql(String sql)
或Restrictions.sqlRestriction(String)
編寫SQL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.