INYECÇÃO SQL através de FORMAS
Tese: INYECÇÃO SQL através de FORMAS. Pesquise 862.000+ trabalhos acadêmicosPor: sarav • 10/6/2014 • Tese • 401 Palavras (2 Páginas) • 371 Visualizações
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.
...