atps redes
IMPORTANTE:
Olhe atentamente a expressão a seguir:
•Injeção SQL Baseado em 1 = 1 é sempre verdadeiro
Vamos dizer que o propósito original do código foi o de criar uma instrução SQL para selecionar um usuário com um determinado ID de usuário. Se não há nada para impedir que um usuário entre entrada "errado", o usuário pode digitar algumas informações "inteligentes" assim:
Nome de usuário: 105 or 1=1
SELECT * FROM Users WHERE UserId = 105 or 1=1
DSS A08
Desenvolvimento de Software Seguro
Arlindo Batista Xavier Filho
O SQL acima é válido. Ele irá retornar todas as linhas da tabela de usuários, uma vez que 1 = 1 é sempre verdadeiro.
4
SQL Injection
Objetivo:
Verdadeiro
SELECT * FROM Users WHERE UserId = 105 or 1=1
É equivalente a:
SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or
1=1
apresentar o conceito de Sql Injection, e as melhores
formas de proteção.
ou seja:
Finalidade: mostrar ao aluno como é fácil implementar um ataque de
O Campo: “Nome de Usuário”, podemos preenche-lo à partir das entradas “105 or 1=1” o qual irá retornar o mesmo valor.
Injeção SQL e as principais formas de defesa.
Pesquise alguns sites abertos:
Utilize a seguinte sintaxe: inurl:noticias.php?id=
Resposta google em 31/03/2014
Aproximadamente 3.810.000 resultados (0,19 segundos)
2
Conceito
•É uma vulnerabilidade usada para a manipulação em Bancos de
Dados Sql. Permite ao atacante executar consultas ao banco de dados inserindo queries (comandos Sql) na url do site ou até mesmo em campos de texto. Desta Maneira é possível obter informações confidenciais como usuários e senhas, além de outras informações.
3
5
Injeção SQL Baseado em "" = "" é sempre verdadeira
Validação simples no site:
A seguir uma construção comum, usado para verificar o login do usuário para um site:
6
1
Código no servidor
Parâmetros para a Proteção
uName = getRequestString("UserName"); uPass =