【问题标题】:How to fix SQL Injection veracode issue- CWE 564如何修复 SQL 注入验证码问题 - CWE 564
【发布时间】:2020-08-24 09:27:17
【问题描述】:
@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); 收到验证码扫描错误。谁能帮我解决这个问题。我可以在这里使用什么来解决问题。验证码问题 ID 是 CWE 564。

【问题讨论】:

  • 这个答案对你有用吗?
  • @RomanCanlas 我已经实现了解决方案,等待veracode报告。
  • @RomanCanlas 没有兄弟,解决方案没有成功..
  • 最新的 Veracode 扫描结果是什么?结果有什么变化还是一样?
  • @RomanCanlas 是的,我能够解决这个问题。

标签: hibernate veracode secure-coding


【解决方案1】:

改用 query.setParameter,让 name 成为防止 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 2022-12-21
    • 2019-06-24
    • 2019-09-26
    • 1970-01-01
    相关资源
    最近更新 更多