TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

INYECÇÃO SQL através de FORMAS

Tese: INYECÇÃO SQL através de FORMAS. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  10/6/2014  •  Tese  •  401 Palavras (2 Páginas)  •  324 Visualizações

Página 1 de 2

SQL INJECTION ATRAVÉS DE FORMULARIOS

SQL injection é um tipo de ataque muito simples. Baseia-se na execução de comandos SQL, sejam comandos de manipulação de dados - DML (select, insert, update, delete) ou comandos de definição de dados - DDL (create, drop, alter). Estes comandos são executados através das entradas de formulários web, ou seja, no local destinado para digitação de informações pelo usuário, onde são passados comandos SQL, que por falhas nas aplicações acabam por resultar em alterações no banco de dados ou no acesso indevido à aplicação.

A figura 1 apresenta um exemplo clássico de tal prática em uma tela de autenticação:

Figura 1 - Exemplo de SQL Injection

O problema ocorre devido a autenticação de o usuário ser validada internamente pela aplicação com a seguinte instrução, que verifica se existe um usuário com o respectivo login e senha:

SELECT * FROM tabela_usuarios WHERE login = 'campo_login' AND senha = 'campo_senha'

Normalmente, seriam digitados o login e a senha, que resultaria em uma consulta ao banco de dados para verificar se os mesmos conferem, mas na figura acima foi passado parte de um comando SQL no campo reservado para senha, que internamente resultará na seguinte instrução:

SELECT * FROM tabela_usuarios WHERE login = '123' AND senha = ' ' or '1' = '1'

Observe que o comando passado no campo da senha fez com que independente do login e senha informados, a condição seja sempre verdadeira, permitindo assim o acesso do usuário à aplicação sem o mesmo possuir a devida permissão.

SQL Esperado Parâmetros Informados SQL Resultante Comentário

Campo Login Campo Senha

SELECT * FROM tabela_usuarios WHERE login = 'campo_login' AND senha = 'campo_senha' marcos’;-- SELECT * FROM tabela_usuarios WHERE login = 'marcos';--' AND senha = 'campo_senha' Se o usuário já souber o login (no caso, login do usuário marcos) então consegue logar sem senha, já que os caracteres “--“ são comentários no SQL

' OR 1=1 -- SELECT * FROM tabela_usuarios WHERE login = '' OR 1=1--' AND senha = 'campo_senha' Neste caso, não é necessário saber nem o login nem a senha, pois a condição “OR 1=1” sempre vai ser satisfeita e todos os comandos posteriores são comentados pelos carecteres “--”

123'; DROP TABLE produtos; -- SELECT * FROM tabela_usuarios WHERE login = '123'; DROP TABLE produtos;-- ' AND senha = 'campo_senha' Este caso é muito parecido com o primeiro mas um comando para apagar uma tabela é executado antes do comentário. Na verdade aqui o objetivo era somente apagar a tabela, por isso foi passado um login qualquer.

...

Baixar como (para membros premium)  txt (2.6 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com