Foros del Web » Programando para Internet » PHP »

Que tal esto para evitar injection?

Estas en el tema de Que tal esto para evitar injection? en el foro de PHP en Foros del Web. Se me ha ocurrido una manera para intentar evitar el tan temido sql injection. He buscado por el foro pero no he encontrado info sobre ...
  #1 (permalink)  
Antiguo 25/01/2006, 07:27
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
De acuerdo Que tal esto para evitar injection?

Se me ha ocurrido una manera para intentar evitar el tan temido sql injection.
He buscado por el foro pero no he encontrado info sobre el tema, pido perdón por si ya se ha tratado.

Lo que se me ha ocurrido es que una vez tengamos tratadas las variables (un tratamiento a nivel de coherencia de los datos por ejemplo) que van a ser ingresadas en la base de datos, las guardemos en la BD de manera binaria, asi se evitaria (aun escapando a nuestros filtros) sentencias SQL...

No se cuan descabellada es mi idea, pero me gustaria que se comentara sus pros y contras.
Gracias
  #2 (permalink)  
Antiguo 25/01/2006, 08:12
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 10 meses
Puntos: 0
Te refieres a hacer un espejo de base de datos? no entendi bien
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #3 (permalink)  
Antiguo 25/01/2006, 08:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Me refiero al tipo de datos de los campos de la base de datos,
en ponerlos a BIN (binario)
De esta manera la sentencia SQL no se veria infectada con lo que queremos grabar.
  #4 (permalink)  
Antiguo 26/01/2006, 09:45
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Se entiende lo que quiero decir?
De la misma manera que algunos guardan imagenes en la base de datos... yo solo que guardo texto
  #5 (permalink)  
Antiguo 26/01/2006, 09:50
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 11 años, 10 meses
Puntos: 0
http://www.php.net/manual/es/securit...-injection.php

conseguí eso, lo lei y creo que esta bastante completo
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #6 (permalink)  
Antiguo 10/02/2006, 07:21
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Pondre un ejemplo mas grafico.
Inserto en la base de datos un 3, este '3' va dentro del campo `numero`.
Bien, si alguien escribe "3'; DELETE * FROM usuarios" puede q si nuestro codigo php no lo controla bien llegue a eliminar el contenido de la tabla usuarios.
Pero si convertimos en binario los datos a introducir en la BD, introduciriamos algo asi (creo, no lo he comprobado): "0101110101010001010100101"
de esta manera aunque un usuario malintencionado inyecte codigo sql el motor de la base de datos no lo interpretará como tal sino como datos solamente.

Pues mi pregunta era si es una buena opción o sin embargo mi teoria falla por algun lado
Saludos
  #7 (permalink)  
Antiguo 10/02/2006, 07:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Otro buen tutorial al respecto (con capítulo sobre "SQL inyection"):
http://lwest.free.fr/doc/php/lib/ind...client&lang=en

Un saludo,
  #8 (permalink)  
Antiguo 10/02/2006, 07:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por clinisbut
Pondre un ejemplo mas grafico.
Inserto en la base de datos un 3, este '3' va dentro del campo `numero`.
Bien, si alguien escribe "3'; DELETE * FROM usuarios" puede q si nuestro codigo php no lo controla bien llegue a eliminar el contenido de la tabla usuarios.
Pero si convertimos en binario los datos a introducir en la BD, introduciriamos algo asi (creo, no lo he comprobado): "0101110101010001010100101"
de esta manera aunque un usuario malintencionado inyecte codigo sql el motor de la base de datos no lo interpretará como tal sino como datos solamente.

Pues mi pregunta era si es una buena opción o sin embargo mi teoria falla por algun lado
Saludos
Si quieres hacer eso .. da igual si es binario o base64 por ejemplo .. daría igual. El aumento extra de información sería "increible" (buff un binario!!!!!!!! o un base64 de una cadena dada...).

Además .. siempre vas a tener que convertir tu dato a "binario" (o tu "codificación") para poder acceder a esos datos .. No creo que el sentido de almacenar datos en una BBDD es que no se puedan acceder .. también los vas a consultar.

Pero lo que no tienes para nada encuenta es que una Base de datos no se usa sólo para "almacenar" información que ahí se quede .. sino que se "consulta" esa información y no sólo de datos que "pidamos" de forma externa (bajo una variable $php que podamos convertir a "binario" por ejemplo ..) sino que muchas veces se usan funciones própias del SQL ..

Ya no te hablo de los problemas que tendrías si migras esos datos a otros sistemas u otros sistemas los tienen que acceder.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:23.