@Override
public AssetLibraryReference selectALRefByName(String entityName,String name) throws Exception {
AssetLibraryReference returnRef = null;
String query = "from " + entityName + " where name = :name ";
try {
returnRef = sessionQueryUtil.doSessionQuery(session -> {
// queryStr.append("from " + entityName + " where name = :name ");
Query q = session.createQuery(query);
q.setString("name", name);
return (AssetLibraryReference)q.uniqueResult();
});
} catch (HibernateException e) {
LOG.error ("Caught hibernate exception",e);
e.printStackTrace();
throw e;
} catch (Exception e) {
LOG.error("Caught Exception :"+e.getMessage());
e.printStackTrace();
throw e;
}
return returnRef;
}我在Query q = session.createQuery(query);收到veracode扫描错误。有人能帮我解决这个问题吗?我可以在这里使用什么来解决这个问题。veracode问题id为CWE 564。
发布于 2020-08-27 11:46:07
请改用query.setParameter,使其成为阻止SQL注入的命名参数。
@Override
public AssetLibraryReference selectALRefByName(String entityName,String name) throws Exception {
AssetLibraryReference returnRef = null;
String query = "from " + entityName + " where name = :name ";
try {
returnRef = sessionQueryUtil.doSessionQuery(session -> {
// queryStr.append("from " + entityName + " where name = :name ");
Query q = session.createQuery(query);
q.setParameter("name", name);
return (AssetLibraryReference)q.uniqueResult();
});
} catch (HibernateException e) {
LOG.error ("Caught hibernate exception",e);
e.printStackTrace();
throw e;
} catch (Exception e) {
LOG.error("Caught Exception :"+e.getMessage());
e.printStackTrace();
throw e;
}
return returnRef;
}https://stackoverflow.com/questions/63558223
复制相似问题