Injeção de SQL
Consiste num tipo de vulnerabilidade em que um invasor usa uma parte do código
para manipular o banco de dados do site e obter acesso a informações dos
usuários. Esse é um dos tipos de ataque mais comuns e perigosos porque pode ser
usado contra qualquer aplicação de Web ou site que utilize um banco de dados SQL
(ou seja, a maioria deles).
Os invasores podem explorar pontos fracos e usar caixas de entrada no formulário
para enviar suas próprias solicitações ao banco de dados. Isso poderia permitir a
realização de uma série de atividades como roubo de dados confidenciais e
manipulação de informações no banco de dados para seus próprios fins.
Sintomas da SQLi
● Grande número de solicitações em um pequeno período
● Redirecionamento para sites suspeitos
● Pop ups e mensagens de erro estranhos
Categorias
● Em banda: Eles usam o mesmo canal de comunicação para desencadear
ataques e obter resultados.
SQLi com base em erro: o banco de dados gera uma mensagem de
erro devido às ações do invasor. Com base nisso o invasor coleta
informações sobre a infraestrutura do banco de dados.
SQLi com base em Union: o invasor usa o operador UNION SQL
para obter os dados desejados reunindo várias instruções select em
uma única resposta HTTP.
● De inferência: Enviam cargas de dados e usam os padrões de resposta e
comportamento do servidor para obter informações sobre a estrutura dele.
SQLi com base em tempo: os invasores enviam uma consulta SQL
ao banco de dados, fazendo com que ele aguarde alguns segundos
antes de responder à consulta como verdadeiro ou falso.
SQLi booliano: os invasores enviam uma consulta SQL ao banco de
dados, permitindo que o aplicativo responda com a geração de um
resultado verdadeiro ou falso.
● Fora de banda: Quando os invasores não conseguem usar o mesmo canal
para desencadear o ataque e coletar informações e/ou um servidor está
muito lento ou instável para executar essas ações.
Impacto dos ataques
● Expor dados confidenciais. Os invasores podem recuperar dados, o que
gera o risco de exposição de dados confidenciais armazenados no servidor.
● Comprometer a integridade dos dados. Os invasores podem alterar ou
excluir informações.
● Comprometer a privacidade dos usuários. Um ataque pode expor
informações confidenciais dos usuários, como endereços, números de
telefone e dados de cartões de crédito.
● Conceder a um invasor acesso de administrador a seu sistema. Se um
usuário de banco de dados tiver privilégios administrativos, um invasor
poderá obter acesso ao sistema usando código.
● Dar a um invasor acesso geral a seu sistema. Se você usar comandos
SQL fracos para verificar nomes de usuário e senhas, um invasor poderá
obter acesso a seu sistema sem saber as credenciais de um usuário. Depois
disso, o invasor poderá causar danos acessando e manipulando informações
confidenciais.
Métodos de prevenção
● Queries parametrizadas/preparadas: Essa abordagem permite que os
desenvolvedores insiram parâmetros nas consultas, evitando a injeção de
SQL. Ao utilizar parâmetros, as consultas se tornam mais dinâmicas e
flexíveis, permitindo que os dados sejam alterados e manipulados de acordo
com as necessidades do usuário.
● Utilização de ORMs:é uma técnica de mapeamento objeto-relacional que visa
criar uma camada de mapeamento entre nosso modelo de objetos
(aplicação) e nosso modelo relacional (banco de dados) de forma a abstrair o
acesso ao mesmo.
● Práticas de sanitização e validação de dados: A purificação do banco de
dados tem por finalidade deletar as informações incorretas das listas. Dessa
forma, no futuro a empresa enfrenta menos problemas para estabelecer
contatos e tratar sobre:Envio de promoções;Negociação de melhores prazos
ou métodos de pagamento;Período de entregas;Personalização
demandas;Serviços de suporte.
SQL Injection caso real
Um exemplo de incidente de segurança ocorreu com a rede de lojas americana
Target em 2013. Neste incidente, atacantes usaram SQL Injection para
comprometer os sistemas de pagamento da empresa. O ataque permitiu o acesso a
informações, como dados de cartões de crédito/débito de cerca de 40 milhões de
clientes, além de dados pessoais de 70 milhões de consumidores adicionais.
A vulnerabilidade explorada no sistema da loja era um ponto de entrada que
possibilitou a injeção de código SQL. Com isso, os atacantes conseguiram
manipular as consultas SQL e acessar informações que normalmente estariam
restritas. O incidente gerou repercussões financeiras significativas para a empresa e
chamou a atenção para a importância de práticas robustas de segurança na
proteção de dados financeiros e pessoais.
Concatenação de Strings : O código construído a consulta SQL concatenando
diretamente a entrada do usuário ( $user_id) na string da consulta. Isso permite que
um atacante insira comandos SQL maliciosos.
Validação e Sanitização : Sempre valide e higienize a entrada do usuário. Verifique
se o dado recebido é do tipo e formato esperado.
Um possível golpe seria:
Essa consulta sempre retornará todos os registros da tabela usuarios, pois 1=1
Tendo em mãos as tabelas usuários, os invasores conseguiriam todas as
informações inseridas nelas
Referências
GOCACHE. **O que é SQL Injection para iniciantes**. Disponível em:
<[Link] . Acesso
em: 5 nov. 2024.
KASPERSKY. O que é SQL Injection .https ://[Link]
.br/recurso-cent/definição/s-eu.
INFORMÁTICA. Consultas parametrizadas . [Link]://[Link].com
/pt/dados-qualidade-e-gove/dados -qualidade/10 -1 -1//_guia
-d-serv-de-dado-dados_sql_-qualidade-1
-1_d/sintaxe/consultar/consultas_parametrizadas.ht.
PROGRAMAÊ!. O que é uma consulta parametrizada no desenvolvimento web
.https ://[Link] /web /g/o -que -e-consulta--parâmetro-acenar-nós.
DATAEX. Limpeza de dados: 5 boas práticas .https ://[Link] .br
/limp-de-dado-5 -b-idiota.
ACADEMIA CUBOS. ORM (Mapeador Objeto Relacional). Deshttps
://[Link]/orm--objeto-rela-m/#:~:tex=O %20%2(Objeto%20Relacional
%20,teia %2%C%A9%%20sistemas %20%2.
DEVMEDIA. ORM - Mapeador Relacional de Objetos . Disponível em: < https
://[Link] .[Link] /orm--objeto-rela-minha/190.
DEVMEDIA. ORM - Mapeamento Objeto Relacional . Revista Easy .NET
Magazine , n. 28. Disponível em: <https : //[Link] .br /orm-objeto
-r-mapa-revi-e-não-revista-28/271.