2014-09-03 99 views
0

我正在使用JPA。如果我正在使用本地sql查詢(而不是實體查詢),那麼我的應用程序如何可以安全SQL注入?我需要使用用戶從html表單提交的數據構建本機sql查詢。本機SQL查詢 - SQL注入攻擊

如果我在原生sql中使用參數,我可以避免SQL注入攻擊,但是我的問題是我無法確定用戶提交了多少個數據字段。

回答

2

您應該使用位置參數綁定:

String queryString = "select * from EMP e where e.name = ?1"; 
Query query = em.createNativeQuery(queryString, Employee.class); 
query.setParameter(1, "Mickey"); 

請注意,您不應命名參數綁定(:empName)在查詢的JPA規範說

只有位置參數綁定可以輕易地用於原生查詢。

這應該可以保護您免受SQL注入攻擊。