0
我正在使用JPA。如果我正在使用本地sql查詢(而不是實體查詢),那麼我的應用程序如何可以安全SQL注入?我需要使用用戶從html表單提交的數據構建本機sql查詢。本機SQL查詢 - SQL注入攻擊
如果我在原生sql中使用參數,我可以避免SQL注入攻擊,但是我的問題是我無法確定用戶提交了多少個數據字段。
我正在使用JPA。如果我正在使用本地sql查詢(而不是實體查詢),那麼我的應用程序如何可以安全SQL注入?我需要使用用戶從html表單提交的數據構建本機sql查詢。本機SQL查詢 - SQL注入攻擊
如果我在原生sql中使用參數,我可以避免SQL注入攻擊,但是我的問題是我無法確定用戶提交了多少個數據字段。
您應該使用位置參數綁定:
String queryString = "select * from EMP e where e.name = ?1";
Query query = em.createNativeQuery(queryString, Employee.class);
query.setParameter(1, "Mickey");
請注意,您不應命名參數綁定(:empName
)在查詢的JPA規範說
只有位置參數綁定可以輕易地用於原生查詢。
這應該可以保護您免受SQL注入攻擊。