sql >> Base de Datos >  >> RDS >> Mysql

Consulta de inyección de MySQL

Lo haría a menos que incluya comillas simples en el name publicado. , lo que le permitiría salir de las comillas. Ejemplo, publicar el nombre como:

' or 1 or '

La cláusula WHERE se convierte en:

WHERE id = '' or 1 or '';

Esto coincidiría y recuperaría todas las filas de la tabla debido a or 1 parte. Como puede ver, sale de las comillas para inyectar algo de SQL, luego vuelve a las comillas para que la consulta sea válida.

No, pero si se ejecutó con mysqli_multi_query entonces sí, podría agregar varias consultas al final.

En general, sí, pero sería mejor una declaración preparada. Usando escape, el WHERE la cláusula se convertiría (usando mi ejemplo anterior):

WHERE id = '\' or 1 or \'';

Esto ya no es vulnerable porque las comillas no se pueden separar y solo coincidiría con las filas si el name coincide literalmente con ' or 1 or ' lo que obviamente es poco probable.