Skip to main content

injeção SQL

Injeção de linguagem de consulta estruturada

Erro relacionado

Este servidor é vulnerável a um ataque de injeção de SQL. Certifique-se de que a consulta SQL de entrada seja validada."

Problema

Um ataque de injeção de SQL é um tipo de vulnerabilidade no código de sites e aplicativos da web. Essa vulnerabilidade permite que um invasor sequestre processos de back-end e interfira nas consultas que um aplicativo faz ao seu banco de dados.

Os ataques de injeção de SQL acontecem quando os dados entram em um programa de uma fonte não confiável. Os dados são então usados para construir dinamicamente uma consulta SQL.

Quando os ataques de injeção de SQL são bem-sucedidos, os invasores podem:

  • Faça login em um aplicativo ou front-end de site sem uma senha.

  • Acesse, modifique e exclua dados armazenados de bancos de dados protegidos.

  • Crie seus próprios registros de banco de dados ou modifique os registros existentes, abrindo caminho para mais ataques.

Solução

Para evitar ataques de injeção de SQL:

  1. Use instruções preparadas (com consultas parametrizadas) para garantir que os parâmetros (entradas) passados para instruções SQL sejam manipulados com segurança.

  2. Validação de dados de entrada da lista de permissões (não bloqueie). Não filtre a entrada do usuário com base em listas de bloqueio. Os invasores quase sempre encontram uma maneira de contornar sua lista. Se possível, verifique e filtre a entrada do usuário usando apenas listas de permissões restritas.

  3. Caracteres especiais de escape dos parâmetros de entrada quando consultas parametrizadas e validação de dados de entrada não são possíveis.

  4. Aplique o princípio do privilégio mínimo, fortalecendo os controles de acesso ao seu site para reduzir as ameaças à segurança:

    • Use o conjunto mínimo de privilégios em seus sistemas para executar uma ação.

    • Conceda privilégios apenas enquanto a ação for necessária.

    • Não conceda direitos de acesso de administrador a contas de aplicativos.

    • Minimize os privilégios de cada conta de banco de dados em seu ambiente.