A aplicação do acesso com menor privilégio, a higienização das entradas do usuário e a restrição dos procedimentos do banco de dados podem ajudar a evitar a injeção de SQL e a subsequente violação de dados.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
O que é injeção de SQL?
O que é uma API?
Como as APIs funcionam?
O que é segurança de APIs?
Segurança de aplicativos web
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
A injeção de linguagem de consulta estruturada (SQLi) é um ataque de injeção de código que permite ao invasor recuperar, manipular ou destruir informações confidenciais localizadas em bancos de dados SQL. Esses ataques funcionam com a inserção de comandos especializados nos campos de consulta SQL; quando executados, os comandos podem permitir que o invasor falsifique a identidade de usuários legítimos, visualize ou recupere dados protegidos e até mesmo obtenha acesso root aos servidores.
Muitas vezes, os invasores executam o SQLi explorando vulnerabilidades em interfaces de programação de aplicativos (APIs) que não conseguem diferenciar adequadamente entre códigos legítimos e não confiáveis. Sem a capacidade de detectar comandos ou consultas alterados, essas APIs podem ser usadas para executar solicitações maliciosas, como contornar o firewall de aplicativos web (WAF) ou medidas de autenticação.
Normalmente, o SQLi é executado usando um desses três métodos:
Para ver exemplos reais de consultas SQL benignas e maliciosas, leia O que é injeção de SQL?
Embora a injeção de SQL seja uma das ameaças de APIs mais comuns, ela pode ser evitada de forma eficaz com as estratégias de prevenção corretas. As abordagens úteis para evitar a injeção de SQL incluem a restrição de procedimentos do banco de dados, a higienização das entradas do banco de dados e a aplicação do acesso com privilégios mínimos.
A injeção de SQL depende em grande parte da capacidade de um invasor de manipular entradas de dados e funções de banco de dados. Ao restringir essas entradas e limitar o tipo de procedimentos de banco de dados que podem ser executados, as organizações podem minimizar o risco de consultas não autorizadas ou maliciosas. As formas de fazer isso incluem:
As entradas do usuário em qualquer banco de dados SQL devem ser monitoradas, validadas e higienizadas regularmente para eliminar código malicioso.A validação de entradas garante que os dados sejam devidamente inspecionados e formatados de acordo com critérios predeterminados, enquanto a higienização de entradas modifica (ou "higieniza") a entrada removendo caracteres inválidos ou inseguros e reformatando-a conforme necessário. As formas de garantir a validação de entradas incluem:
O acesso com menor privilégio é o princípio de dar aos usuários apenas o acesso aos recursos protegidos que sua função exige. Por exemplo, isso pode significar limitar o número de usuários que recebem privilégios de administrador em um banco de dados ou até mesmo conceder aos usuários acesso temporário de administrador que pode ser revogado posteriormente.
Restringir o acesso de usuários a um nível baseado em função também ajuda a minimizar o impacto de uma violação, pois o invasor que violar um banco de dados usando credenciais roubadas terá a mesma capacidade limitada de visualizar, modificar, roubar ou destruir dados protegidos. Pelo mesmo motivo, as organizações devem limitar o acesso compartilhado a bancos de dados em vários sites e aplicativos.
A Cloudflare ajuda as organizações a melhorar sua resiliência contra ataques de SQLi com um poderoso aplicativo e o portfólio de segurança de APIs:
As consultas parametrizadas separam o código SQL da entrada do usuário, tratando os parâmetros como valores literais em vez de código executável. Essa técnica ajuda a evitar que os invasores injetem instruções SQL maliciosas.
O privilégio mínimo restringe os usuários do banco de dados somente às permissões que eles realmente precisam para suas funções específicas. Isso limita os possíveis danos que os invasores podem causar. Se os invasores realizarem ataques de injeção de SQL com sucesso e obtiverem credenciais de login legítimas, o princípio do menor privilégio ajuda a conter os danos que podem causar com uma conta roubada.
A lista de permissões valida as entradas em relação a um conjunto específico de caracteres ou padrões aceitos, em vez de apenas procurar conteúdo malicioso. Essa abordagem permite apenas entradas explicitamente permitidas em vez de tentar detectar todos os padrões de ataque possíveis, limitando a quantidade de vetores de ataque possíveis.
Os procedimentos armazenados executam instruções SQL predefinidas com parâmetros passados com segurança para o servidor de banco de dados. Eles impedem que partes maliciosas executem códigos diretamente no próprio banco de dados.
Os métodos de prevenção de injeção de segunda ordem incluem a aplicação do princípio do menor privilégio, o uso de consultas parametrizadas e a implementação da validação e higienização de entradas.