1

チェックマークは私たちのコードをスキャンし、これらのコードには次のようなコードへの二次注入のリスクがあることを示しました

@SuppressWarnings("unchecked")
public List<Map<String, Object>> findBySQL(String sql, List<ScalarType> types, List<Object> values, Info info) throws ApplicationException {
    try {
        SQLQuery query = currentSession().createSQLQuery(sql);
        if (types != null) {
            for (ScalarType scalar : types) {
                query.addScalar(scalar.getColumn(), scalar.getType());
            }
        }

        if (values != null) {
            for (int i = 0; i < values.size(); i++) {
                query.setParameter(i, values.get(i));
            }
        }
        query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        return query.list();
    } catch (Exception e) {
        throw new ApplicationException(e, info);
    }
}

私たちのコードは、preparedStatement を使用して sql を実行します。しかし、なぜこれらのコードにはまだリスクがあるのでしょうか?どうすれば修正できるでしょうか?

4

2 に答える 2