SQL Threat Protection
Este interceptor tem a função de bloquear ataques de injeção de SQL (SQL Injection, em inglês) na chamada a uma API que acesse um banco de dados.
Funcionamento
O interceptor funciona com base em uma expressão regular (regex) que valida o conteúdo de body, headers, cookies, query params e path params passados na requisição. Se a regex encontrar trechos que podem indicar uma injeção de SQL, a chamada é abortada e um erro é retornado (veja os erros possíveis abaixo).
| Para reforçar a segurança, tornamos a regex mais restritiva a partir da Release 4.4.0.0 da Plataforma. Se você já utilizava o SQL Threat Protection em suas APIs antes, pode ser que experiencie problemas no tráfego de alguns dados que antes não eram barrados. Um exemplo: caso seja enviada uma string contendo uma keyword e um complemento, o interceptor identifica uma ameaça e aborta a requisição. Nesse caso, você pode alterar a forma com que os dados trafegam, desmembrando a string em diferentes pares de chave e valor. | 
| Atente-se para o envio de imagem em form-data. Nesses casos, o corpo é recebido como um array de bytes e, na decodificação, é possível que alguns caracteres sejam entendidos como injeção de SQL e a chamada seja abortada. Para evitar isso, é possível enviar a imagem convertida para Base64, como neste exemplo de corpo:  | 
Configuração
Embora o SQL Threat Protection possa ser inserido também no fluxo de resposta de uma API, é essencial que ele esteja no fluxo de requisição, pois os ataques mencionados acontecem na direção cliente → backend.
 
Para configurar o interceptor, basta escolher pelo menos uma das opções de bloco a ser protegido. Quando inserido no fluxo de requisição, as opções são estas:
- 
Body: aplica a proteção ao corpo da requisição; 
- 
Headers: aplica a proteção a todos os cabeçalhos, verificando cada um deles separadamente; 
- 
Query Params: verifica parâmetro por parâmetro à procura de um ataque; 
- 
Cookies: aplica a proteção em todos os cookies, verificando cada um deles separadamente; 
- 
Path Params: verifica parâmetro por parâmetro à procura de um ataque. 
 
Quando inserido também no fluxo da resposta, há duas outras opções:
- 
Body: aplica a proteção ao corpo da resposta; 
- 
Headers: aplica a proteção a todos os cabeçalhos, verificando cada um deles separadamente. 
 
Se todas as opções forem selecionadas, as validações ocorrerão na seguinte sequência:
- 
Requisição: Query Params, Body, Headers, Cookies, Path Params. 
- 
Resposta: Body, Headers. 
Erros
Caso algum ataque de injeção seja identificado, os seguintes erros serão retornados:
| Campos | Erro | Cód. HTTP Requisição | Cód. HTTP Resposta | 
|---|---|---|---|
| Body | SQL Injection attack identified in this API Body | 400 | 500 | 
| Headers | SQL Injection attack identified in this API Headers | 400 | 500 | 
| Query Params | SQL Injection attack identified in this API Query Params | 400 | - | 
| Cookies | SQL Injection attack identified in this API Cookies | 400 | - | 
| Path Params | SQL Injection attack identified in this API Path Params | 400 | - | 
Share your suggestions with us!
          Click here and then [+ Submit idea]