Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Query sql

Boa tarde! Tenho uma dúvida referente a query do sql: "select * from usuarios where email='{$email}' and senha='{$senhaMd5}'". Por que quando mandamos comandos pelo input de email ele consegue logar mesmo com uma senha qualquer? Digo, como na query, entre email e senha, existe um "and" eu imaginei que não funcionaria pois apenas o conteúdo de {$email} se torna verdade porém o de senha continua falso,e, pelo oq eu lembre, quando se usa "and" os dois campos devem ser verdade

1 resposta
solução!

Fernando, isso é porque no ataque usamos o operador or. Na query que você mandou, se colocássemos como email ' OR id = 1 OR guilherme=', olha como ficaria a query inteira:

SELECT * FROM usuarios WHERE email='' OR id=1 OR guilherme='' AND senha='<senha>'

O OR precede o AND. Assim, a query busca linhas com o email '' (vazio), ou com o id 1, ou com simultaneamente guilherme (que é um campo inexistente, mas acaba não importando, porque nem chegamos nessa verificação) '' (vazio) e senha igual a senha que você colocou no campo de senha.

Ficou mais claro? Abraços e bons estudos!