Contente
- Definição - O que significa SQL Injection?
- Uma introdução ao Microsoft Azure e Microsoft Cloud | Neste guia, você aprenderá sobre o que é a computação em nuvem e como o Microsoft Azure pode ajudá-lo a migrar e administrar seus negócios a partir da nuvem.
- Techopedia explica injeção SQL
Definição - O que significa SQL Injection?
Uma injeção de SQL é um ataque de computador no qual o código malicioso é incorporado a um aplicativo mal projetado e depois passado ao banco de dados de back-end. Os dados maliciosos produzem resultados da consulta ao banco de dados ou ações que nunca deveriam ter sido executadas.
Uma introdução ao Microsoft Azure e Microsoft Cloud | Neste guia, você aprenderá sobre o que é a computação em nuvem e como o Microsoft Azure pode ajudá-lo a migrar e administrar seus negócios a partir da nuvem.
Techopedia explica injeção SQL
Vamos ver um exemplo de ataque de injeção SQL:
Um aplicativo que executa as operações de um banco contém menus que podem ser usados para procurar detalhes do cliente usando pontos de dados, como o número do Seguro Social do cliente. Em segundo plano, o aplicativo chama uma consulta SQL que é executada no banco de dados passando os valores de pesquisa inseridos da seguinte maneira:
SELECIONE nome_do_cliente, telefone, endereço, data_de_birth WHERE social_sec_no = 23425
Neste script de amostra, o usuário digita o valor 23425 na janela do menu do aplicativo, solicitando que o usuário insira o número do Seguro Social. Em seguida, usando o valor fornecido pelo usuário, uma consulta SQL é executada no banco de dados.
Um usuário com conhecimento de SQL pode entender o aplicativo e, em vez de inserir um valor único quando solicitado pelo número do Seguro Social, insira a sequência "23425 ou 1 = 1", que é passada ao banco de dados da seguinte maneira:
SELECT nome_do_cliente, telefone, endereço, data_de_natalidade WHERE social_sec_no = 23425 ou 1 = 1
A cláusula WHERE é importante porque introduz vulnerabilidade. Em um banco de dados, a condição 1 = 1 sempre é verdadeira e, como a consulta foi especificada para retornar os detalhes do número de Seguro Social do cliente (23425) ou WHERE 1 = 1, a consulta retornará todas as linhas da tabela, que não eram as Intenção original.
O exemplo de ataque de injeção SQL acima é simples, mas mostra como explorar uma vulnerabilidade para induzir o aplicativo a executar uma consulta ou comando de banco de dados back-end.
Os ataques de injeção de SQL podem ser mitigados, garantindo o design adequado do aplicativo, especialmente em módulos que requerem entrada do usuário para executar consultas ou comandos no banco de dados. No exemplo acima, o aplicativo pode ser alterado para aceitar apenas um valor numérico.