RA 4351 BRK - R9 SQL Injection R9 - V01_01_5_01H ![image](https://hackmd.io/_uploads/SkMOUa27ye.png) RECOMENDAÇÕES PARA CORREÇÃO Para a correção desta vulnerabilidade, é recomendado: • Realizar uma sanitização de todos os inputs de usuários, não permitindo que sejam processados como querys; • Aplicar a correção do filtro de campo CPF / CNPJ em todos os locais; • Não permitir que inputs de usuários sejam refletidos como querys ao banco de dados; classe: br.com.autbank.r9.sb.relatorios.impl.SBRelMapeamento ``` java private String getQuery(ITORelMapeamento toRelMapeamento) { StringBuffer query = new StringBuffer(R9_SP_REL_MAPEAMENTO); Object[] args = { ADMUtils.toSQLFormatoParametro(toRelMapeamento.getDataBase()), ADMUtils.toSQLFormatoParametro(toRelMapeamento.getCadColigada()), ADMUtils.toSQLFormatoParametro(toRelMapeamento.getCpfCnpj()), ADMUtils.toSQLFormatoParametro(ADMSimNao.booleanToChar(toRelMapeamento.getCadoc3040())), ADMUtils.toSQLFormatoParametro(toRelMapeamento.getTipoRelatorio()) }; return MessageFormat.format(query.toString(), args); } ``` classe: br.com.autbank.r9.fw.impl.ADMUtils .de ``` java public static String toSQLFormatoParametro(String campo){ String formatoSQL = campo; if(formatoSQL != null){ formatoSQL = "'" + formatoSQL + "'"; } return formatoSQL; } public static String toSQLFormatoParametro(String campo, boolean acrescentaPercentualFim){ String formatoSQL = campo; if(formatoSQL != null){ if(acrescentaPercentualFim){ formatoSQL = formatoSQL + "%"; } formatoSQL = "'" + formatoSQL + "'"; } return formatoSQL; } public static String toSQLFormatoParametro(String campo, boolean acrescentaPercentualInicio, boolean acrescentaPercentualFim){ String formatoSQL = campo; if(formatoSQL != null){ if(acrescentaPercentualInicio){ formatoSQL = "%" + formatoSQL; } if(acrescentaPercentualFim){ formatoSQL = formatoSQL + "%"; } formatoSQL = "'" + formatoSQL + "'"; } return formatoSQL; } ``` .para ``` java public static String toSQLFormatoParametro(String campo){ String formatoSQL = campo; if(formatoSQL != null){ formatoSQL = "'" + formatoSQL.replaceAll("'", "''") + "'"; } return formatoSQL; } public static String toSQLFormatoParametro(String campo, boolean acrescentaPercentualFim){ String formatoSQL = campo; if(formatoSQL != null){ if(acrescentaPercentualFim){ formatoSQL = formatoSQL + "%"; } formatoSQL = "'" + formatoSQL.replaceAll("'", "''") + "'"; } return formatoSQL; } public static String toSQLFormatoParametro(String campo, boolean acrescentaPercentualInicio, boolean acrescentaPercentualFim){ String formatoSQL = campo.replaceAll("'", "''"); if(formatoSQL != null){ if(acrescentaPercentualInicio){ formatoSQL = "%" + formatoSQL; } if(acrescentaPercentualFim){ formatoSQL = formatoSQL + "%"; } formatoSQL = "'" + formatoSQL.replaceAll("'", "''") + "'"; } return formatoSQL; } ```