06-04-2011, 11:05 AM
(Este mensaje fue modificado por última vez en: 06-04-2011, 11:46 AM por Reboot.)
(06-04-2011, 10:00 AM)Reaper45 escribió:(06-03-2011, 06:51 PM)Reboot escribió: Simplemente con la buena costumbre de usar addslashes() en las consultas ya te ahorras de muchos quebraderos de cabeza.
http://shiflett.org/blog/2006/jan/addsla...ape-string
;-)
Mejor hacer una lista blanca de caracteres que filtrar posibles entradas peligrosas. Bastaría con una función php para validar que cada posición del array que le pases contenga un carácter alfanumérico. Si no lo es, entrar en modo pánico y devolver falso. Y por supuesto, no olvidarse de pasársela a cada variable que vaya a una consulta.
Como la mayoría de almas en la red, yo uso Latin-1 en la base de datos, por lo que addslashes es, por lo general, suficiente
De todas formas estoy viendo que todo el meollo viene de que la peña consulta [MAL] para los usuarios buscando por user y password y compararlos por SQL mismo. ¡ERROR! Busca el user, consulta su password y luego compara lo que te viene del formulario con lo que te viene de DDBB con PHP.
A mí jamás se me ocurriría hacer búsqueda y comparación directamente en SQL. Soy poco elegante y parezco un n00b haciendo eso, pero al final tengo razón y me evito (sin querer) problemas de inyección.
En mi caso, la comprobación de passwords es tan animal como sigue:
1. Consulto de la base de datos TODOS los usuarios y los empaqueto en un array $USER.
2. Compruebo que el $USER[$usuario] existe y le saco sus datos.
3. Compruebo que $USER[$usuario]["password"]=$password.
3. Return $USER[$usuario]
No se mete nada de fuera en la consulta, todos contentos.
"Es como el que se mataba a pajas con U-jin y hoy en día o es Boku no Piko o ni se le levanta." - AniList