About Me

O que é SQL INJECTION


O Que é SQL INJECTION

O SQL Injection é um ataque que visa
enviar comandos nocivos à base de dados através dos campos de formulários ou através de URLs. Um ataque bem-sucedido pode, entre outras coisas, apagar (dropar) uma tabela do banco, deletar todos os dados da tabela ou até adquirir senhas que estejam cadastradas em um banco.

Os ataques de injeção SQL, em que instruções SQL mal-intencionadas são inseridas em um campo de entrada (inserido por usuários em um aplicativo) para execução, são um dos ataques mais comuns em todo o mundo.

Uma exploração de injeção de SQL bem sucedida pode ler dados confidenciais do banco de dados e pode modificar os dados do banco de dados. A maioria dos aplicativos está interagindo com o banco de dados usando a linguagem de consulta estruturada para os bancos de dados. O ataque de injeção SQL pode excluir ou modificar os dados dos clientes no banco de dados.

Considere que há um aplicativo que é usado para pesquisar sobre os produtos na empresa. O usuário deve inserir o nome do produto no campo de entrada de um aplicativo. Eles estão mantendo os dados relacionados ao produto em "Table_Product".

Considere que um usuário que entra no "Brinquedos" no campo de entrada. Em seguida, o aplicativo de pesquisa irá listar os dados relacionados aos brinquedos. Para esta pesquisa, a consulta SQL será "selecionar * de Table_Product onde Nome = 'brinquedos'; ".

No nosso código de programação, estamos apenas concatenando a string para consultar qual é inserido pelo usuário no campo de entrada do aplicativo.


EXEMPLO

Selecione * de Table_Products onde Name = '"+ TextBox.Text +"';

Quando o usuário entra como brinquedos, a consulta se tornará

Selecione * de Table_Products em que Nome = 'brinquedos'; Isso é bom para todos.

Imagine que o usuário entre "Livros"; Drop table Table_Product - "esta é a string inserida pelo usuário no campo de entrada.

Quando estamos concatenando a string inserida, a consulta se tornará

Selecione * de Table_Product onde Name = 'Books'; Drop Table Table_Product - ';

Depois - tudo é considerado como texto comandado em SQL. Portanto, a consulta acima irá soltar a tabela.

EXEMPLO 2 : 

Imagine que a Tabela chamada Login. Tem coluna de nome de usuário, senha e ID.

Quando o usuário entrar em Id, ele mostrará o nome de usuário e a senha. No campo ID se o cliente entrar

12345

Então, se o ID existir nessa tabela, ele mostrará o nome de usuário e a senha para esse id correspondente.

Selecione o nome de usuário e a senha do Login onde ID = 12345;

Se o Hacker entrar em "12345 OR 1 = 1" no campo Id, a consulta será como abaixo

Selecione o nome de usuário, a senha do Login onde ID = 12345 OR 7 = 7;

Ele retornará o nome de usuário e a senha de cada usuário porque 7 = 7 condição é verdadeira.

Selecione o nome de usuário, senha do Login onde ID = 12345 OU NULL é NULL; Isso também retornará todos os dados nessa tabela de login.

Isso é chamado de injeção SQL.

Solução para evitar a injeção de SQL

Ao fazer a programação não devemos construir as consultas dinâmicas, concatenando a entrada do usuário.

1. Consultas parametrizadas (parâmetros de ligação) para consultas.

2. Usando procedimentos armazenados.

Quando usamos consultas parametrizadas, independentemente do usuário entrar no campo de entrada, o conteúdo inteiro é considerado como um valor para essa entrada.

Usando o procedimento armazenado

Criar proc Sp_Product

@Name Varchar (50)

Como

Início

Selecione * de Table_Prodcut onde Name = @Name;

Fim

No processo anterior, precisamos passar um parâmetro para o procedimento armazenado, que é o nome do produto. Seja qual for o tipo de usuário que é considerado como uma entrada para o parâmetro Name.

Precisamos executar o procedimento armazenado usando a programação e ter que fornecer a entrada para o parâmetro no procedimento armazenado que é inserido pelo usuário no campo de entrada.

Portanto, para evitar a Injeção de SQL, não devemos construir consultas (dinamicamente), concatenando entradas de usuários.

 Bonus 

aprenda mais sobre sql injection com apostilas basica e avançadas !

DOWNLOD GRATIS NO MEGA 
Tamanho : 2.00 mb 
formato : Pdf
quantidade : 2 apostila completa 
clique abaixo para baixar ! 





← Anterior Proxima → Página inicial

Nenhum comentário:

Postar um comentário

Marcadores