Como prevenir ataques SQL Injection

 In AppSec

O que é SQL Injection?

SQL Injection (SQLi) refere-se a um ataque de injeção em que um invasor pode executar instruções SQL maliciosas (também conhecidas como payload) que controlam o banco de dados relacional de um aplicativo da Web. O invasor, nas circunstâncias certas, pode usar a injeção de SQL para ignorar os mecanismos de autenticação e autorização de um aplicativo da Web e recuperar o conteúdo de todo o banco de dados.

O atacante pode até executar declarações que modificam o banco de dados de alguma forma, por exemplo, excluindo alguns dados ou atualizando os dados com valores incorretos. Dito isso, a injeção de SQL pode fornecer a um atacante acesso a informações confidenciais, como Informações de Identificação Pessoal (PII), propriedade intelectual, segredos comerciais, dados de clientes e muito mais.

A seguir estão algumas das maneiras pelas quais você pode proteger sua aplicação desta vulnerabilidade.

Técnicas de prevenção contra ataques de SQL Injection

Não confie em ninguém

Sempre assuma que as entradas de usuários são mal-intencionadas, ou seja, faça validações em todos os dados enviados pelo usuário para remover, filtrar ou marcar caracteres inválidos, por exemplo, aspas (‘). Dessa forma, torna-se difícil para um usuário mal-intencionado inserir possíveis caracteres de consulta SQL nos pontos de entrada do aplicativo.

Evite SQL Dinâmico

Não construa consultas SQL a partir da entrada do usuário. Tais consultas permitem a fácil inserção de instruções SQL que são executadas diretamente no banco de dados. Em vez disso, use outras alternativas, como prepared statements, parameterized queries ou stored procedures.

Limite os privilégios dos usuários

A conta de administrador com todos os privilégios não deve ser usada em sua aplicação, a menos que seja realmente necessário. Uma conta com menos privilégios é uma opção muito melhor, pois restringe as operações confidenciais, como modificar o banco de dados, e um invasor não conseguirá fazer muito, mesmo se comprometer partes do aplicativo que usam o banco de dados.

Utilize um Web Application Firewall

Um firewall de aplicativo da web filtrará qualquer tráfego malicioso ou suspeito. Bons firewalls têm um conjunto abrangente de regras que podem ser usadas para determinar qual tipo de dados deve ser permitido. Essas regras podem até ser estendidas para atender a novos cenários de ataque.

Reduza a superfície de ataque

É prudente desabilitar qualquer funcionalidade do banco de dados que não seja exigida por sua aplicação para evitar que um invasor aproveite-se disso.

Use mensagens de erro genéricas na produção

Não envie mensagens de erro detalhadas quando o aplicativo estiver em produção. Em vez disso, use mensagens genéricas. Mensagens detalhadas, rastreamentos de pilha e.t.c podem revelar aos hackers muitas informações sobre a arquitetura do banco de dados e facilitar o planejamento de vetores de ataque.

Recent Posts

Leave a Comment

Fale Conosco

Envie-nos uma mensagem que retornaremos mais rápido que você espera.

Not readable? Change text. captcha txt