簡體   English   中英

這個 JPA 查詢是否容易受到 SQL 注入的影響?

[英]Is this JPA query vulnerable to SQL injection?

我有一個庫,它基於調用者提供的 JPA WHERE 語句執行查詢。 我正在執行以下 JPA 查詢:

public void executeQuery(String jpaWhereStatement) {
String queryString = "SELECT entity FROM " + MyEntity.class.getSimpleName() + " entity WHERE " + jpaWhereStatement;
}

仍然使用query.setParameter()插入查詢參數,但我擔心我可能會允許 SQL 注入攻擊。 如果這是易受攻擊的,我該如何修復此代碼?

在不了解來電者的情況下,很難說。 如果未仔細生成 where 語句,則可能存在漏洞。 一般來說,這種方法對我來說似乎是個壞主意。 我個人會更明確地說明您如何生成 WHERE 子句並始終使用參數。

作為一般規則,永遠不要相信任何用於構造 SQL 語句的數據,無論它來自客戶端還是來自數據庫。

正如 bunting 指出的(以及 Adam Bien),如果你堅持參數化查詢,你應該是金子。 當然,如果您的實現中存在一般漏洞,那么您可能會面臨風險。

根據經驗,當涉及用戶輸入或來自 GET 的輸入時,使用 Criteria 確保參數被轉義。 即不要使用 HQL。

如果不涉及用戶輸入或 get 輸入,則可以使用 HQL。

但是是的,如果您使用setParamter()可能沒有 sql 注入問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM