Imagem de fundo

Um formulário web de um sistema de uma empresa solicita um...

Um formulário web de um sistema de uma empresa solicita um nome de login e uma senha em sua página principal, tendo como objetivo autenticar o usuário e fornecer acesso restrito. Sabe-se que esse sistema utiliza a seguinte query em SQL para localizar o usuário em uma tabela do banco de dados:


SELECT * FROM Users WHERE UserLogin = "uName" AND Pass = "uPass"


em que uName e uPass são substituídos pelo conteúdo literal inserido pelo usuário nas caixas de digitação do login e senha, respectivamente, sem nenhum tratamento.

As aspas presentes na query acima fazem parte de seu conteúdo.

Quando essa query não retorna nenhum resultado, o sistema emite uma mensagem de login inválido. Quando essa query retorna algum resultado, é fornecido acesso ao sistema com o login do primeiro usuário retornado na consulta.

Um ataque baseado em SQL Injection, para obter acesso indevido ao sistema, com alguma conta de usuário qualquer, poderia ser tentado com o seguinte preenchimento nas caixas correspondentes a uName e uPass:


Dado: as aspas, quando apresentadas, fazem parte do conteúdo preenchido.


A

uName: admin

uPass: "OR 1 = 1"


B

uName: DROP TABLE

uPass: Users;


C

uName: OR 1 = 1

uPass: OR 1 = 1


D

uName: admin

uPass: "OR "" = "


E

uName: DROP TABLE Users;

uPass: (vazio)