我有一个库,它根据调用者提供的 JPA WHERE 语句执行查询。我正在执行以下 JPA 查询:
public void executeQuery(String jpaWhereStatement) {
String queryString = "SELECT entity FROM " + MyEntity.class.getSimpleName() + " entity WHERE " + jpaWhereStatement;
}
仍然使用 query.setParameter()
插入查询参数,但我担心我可能会允许 SQL 注入(inject)攻击。如果此代码存在漏洞,我该如何修复此代码?
最佳答案
在不了解来电者的情况下,很难说。如果您没有仔细生成 where 语句,可能存在漏洞。总的来说,这种方法对我来说是个坏主意。我个人会更明确地说明您如何生成该 WHERE 子句并始终使用参数。
作为一般规则,永远不要相信任何用于构造 SQL 语句的数据,无论它来自客户端还是来自数据库。
关于java - 这个 JPA 查询是否容易受到 SQL 注入(inject)的攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7030119/