---
# System prepended metadata

title: RA 4351 BRK - R9 SQL Injection

---

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;
    }
```