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: