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. - 
Ignore body when the key is 'Content/type' and the value is 'multipart/form-data': ignora o body se o Content/typetiver o valormultipart/form-data, podendo assim ignorar possíveis expressões reservadas pelo SQL que estejam contidas em arquivos enviados desta maneira.
 
- 
- 
Headers: aplica a proteção a todos os cabeçalhos, verificando cada um deles separadamente. 
- 
Query Params: verifica todo parâmetro à procura de um ataque. 
- 
Cookies: aplica a proteção em todos os cookies, verificando cada um deles separadamente. 
- 
Path Params: verifica todo parâmetro à procura de um ataque. 
Quando inserido no fluxo da resposta, há apenas duas opções:
- 
Body: aplica a proteção ao corpo da resposta. - 
Ignore body when the key is 'Content/type' and the value is 'multipart/form-data': ignorar o body se o Content/typetiver o valormultipart/form-data, podendo assim ignorar possíveis expressões reservadas pelo SQL que estejam contidas em arquivos enviados desta maneira.
 
- 
- 
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: 
 | 
 
Os fluxos de requisição e resposta permitem expressões a serem ignoradas pelo interceptor, isso evita que a chamada seja interrompida quando há palavras ou caracteres reservados, mas dentro um contexto seguro. Para adicionar uma expressão, escreva no campo String e clique ADD, será ignorada em todos os blocos escolhidos acima, tenha em mente que é case-sensitive pelo que faz diferenciação de maiusculas e minisculas.
| Toda expressão adicionada aumenta o tempo de processamento e assim a latência da requisição, especialmente se estiver validando mais de um bloco. | 
| Sugerimos ter cuidado com as expressões que adicionar, especialmente se colocar algo muito amplo, pois pode deixar de validar uma palavra reservada do SQL. | 
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]