Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/07/2013, 04:18
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: hacer un sistema de usuarios vulnerable a inyection SQL

Me da la impresión de que tu problema es la mezcla que estás haciendo entre PHP y MySQL. Pareciera que lo rtatases como si fuera la misma cosa, y no es así...
En el contexto de tus consultas, ese "1=1" está actuando como una cadena de texto, y no como una comparación lógica.
En resumidas cuentas, equivalente a esto:
Código MySQL:
Ver original
  1. mysql> SELECT if('1=1', true, false) RESULTADO;
  2. +-----------+
  3. | RESULTADO |
  4. +-----------+
  5. |         1 |
  6. +-----------+
  7. 1 row in set, 1 warning (0.05 sec)
Devuelve verdadero siempre, porque lo que evalua es si existe algo diferente a NULL, y una cadena de texto por definición es NOT NULL.
En otras palabras, estas poniendo algo que no generará nada. Ni ventajas ni desventajas, ni tampoco evitará de ninguna forma el sql-injection, que en realidad se controla de otras formas.
Entendamos una cosa: Siempre que construyes una sentencia dinámicamente, y en especial si incluye cadenas de texto, te estás exponiendo a la posibilidad del sql-injection.
Si quieres evitarlo, deberás hacerlo de un modo... mejor documentado.
Por otro lado, el addslashes(), tema off-topic de este foro, tiene más que ver con el control de los caracteres que se ingresan, más que con el sql-injection.
Desde el SQL, la mejor opcion para evitar el sql-injection, es usar stored procedures para todo acceso a la base. Desde la programación, hay otros recaudos que se pueden tomar, pero eso lo debes consultar en el Foro de PHP, donde los conocen mejor. Programación es off-topic de este foro (si quieres muevo el post para allá).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)