De http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php llegué:necesita ayuda para entender MySQL inyección
inyección SQL se refiere al acto de alguien inserción de una declaración de MySQL a ser ejecutado en su base de datos sin su conocimiento . La inyección generalmente ocurre cuando le pides a un usuario la entrada, como su nombre, y en lugar de un nombre ellos le dan una declaración de MySQL que ejecutará sin saberlo en su base de datos.
He leído todo el artículo, pero todavía tengo algunos problemas importantes para entender qué es y cómo se puede hacer.
En el primer ejemplo, ¿qué verán en realidad?
Por lo que he entendido, si realmente me hago eco de $ name, verá todos los nombres porque siempre será "verdadero", ¿estoy en lo cierto?
La otra cosa que no entiendo es si EL problema de la inyección de MySQL se resuelve con mysql_real_escape_string(), tiene que haber más.
Lo que realmente no entiendo es que mysql_real_escape_string() está hecho para resolver ese problema, ¿por qué no se hace automáticamente, es decir, hay una razón por la que tiene que agregar cada vez mysql_real_escape_string(), hay casos cuando deberías usarlo y es por eso que no lo hacen automático?
No, mysql_real_escape_string() está hecho ** no ** para resolver problemas, pero para escapar de las comillas. Es muy importante entender eso. Pero casi nadie realmente entiende. –
@Col. Metralla, como que ... un poco, creo que ya lo entiendo :) Gracias. – Trufa
Eso lo dudo. Imagine que tiene una consulta que puede ordenarse en función de la entrada del usuario, como 'SELECCIONAR DE tabla tabla ORDEN POR campo' donde el usuario ingresa el campo. ¿Qué harás? –