Foros del Web » Programando para Internet » PHP »

usar mysql_real_escape_string en $_FILES y $_SESSION

Estas en el tema de usar mysql_real_escape_string en $_FILES y $_SESSION en el foro de PHP en Foros del Web. Hola, es una duda que tengo. Quería saber si es aconsejable, a la hora de insertar en una base de datos desde un formulario, hacerle ...
  #1 (permalink)  
Antiguo 24/03/2010, 18:17
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
usar mysql_real_escape_string en $_FILES y $_SESSION

Hola, es una duda que tengo.

Quería saber si es aconsejable, a la hora de insertar en una base de datos desde un formulario, hacerle un mysql_real_escape_string a las variables $_FILES['archivo']['name'] para guardar el nombre de una foto y a $_SESSION['usuario'] para guardar el nombre del usuario que la sube.


$nombrefoto=$_FILES['archivo']['name'];
$usuario=$_SESSION['usuario'];

$sql="INSERT INTO album (foto,usuario) VALUES ('".mysql_real_escape_string($nombrefoto)."','".my sql_real_escape_string($usuario)."');

Gracias de antemano.
  #2 (permalink)  
Antiguo 24/03/2010, 18:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

sabes lo que hace dicha función??

si la respuesta es si, ¿entonces cual es la duda?

si la respuesta es no, por favor... lee el manual antes de preguntar, ya que dicha función escapa caracteres específicos que claro... deberías saber cuales son para tomar una decisión al respecto... ;)

a mi criterio no es necesaria para guardar la ruta de un archivo... sin embargo resulta útil al escapar otro valor, que bien puede ser un nick... pero depende mucho de si realmente sabes lo que haces o no...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/03/2010, 18:26
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

Bueno la función en sí escapa ciertos caracteres, y evita que te puedan hacer SQL inyection, no?
  #4 (permalink)  
Antiguo 24/03/2010, 18:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

Cita:
Iniciado por PJ100 Ver Mensaje
Bueno la función en sí escapa ciertos caracteres, y evita que te puedan hacer SQL inyection, no?
así es, tienes razón... y en base a eso debes aplicar tu propio criterio, como las variable $_FILES la crea el sistema no veo necesidad de escaparla...

así mismo, $_SESSION la emplea el programador y no es accesible ni alterable por el usuario, de ese modo solo tu sabes en que momento es necesario escapar ciertas variables...

en todo caso si asignas una valor introducido por el usuario deberías validarlo mucho antes de almacenarlo, y no al momento de utilizarlo... he ahí el detalle!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/03/2010, 18:38
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

Pero por ejemplo, supongamos un formulario con un campo de texto y uno para foto.

Como tu dices en esta frase:

en todo caso si asignas una valor introducido por el usuario deberías validarlo mucho antes de almacenarlo, y no al momento de utilizarlo... he ahí el detalle!!

$texto=formato_correcto($_POST['texto']); //función de validación
$nombrefoto=$_FILES['archivo']['name'];
$usuario=$_SESSION['usuario'];


$sql="INSERT INTO album (texto,foto,usuario) VALUES ('".mysql_real_escape_string($texto)."','$nombrefo to"','$usuario');

¿Es eso a lo que te refieres?
  #6 (permalink)  
Antiguo 24/03/2010, 18:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

Cita:
Iniciado por PJ100 Ver Mensaje
Pero por ejemplo, supongamos un formulario con un campo de texto y uno para foto.

Como tu dices en esta frase:

en todo caso si asignas una valor introducido por el usuario deberías validarlo mucho antes de almacenarlo, y no al momento de utilizarlo... he ahí el detalle!!

$texto=formato_correcto($_POST['texto']); //función de validación
$nombrefoto=$_FILES['archivo']['name'];
$usuario=$_SESSION['usuario'];


$sql="INSERT INTO album (texto,foto,usuario) VALUES ('".mysql_real_escape_string($texto)."','$nombrefo to"','$usuario');

¿Es eso a lo que te refieres?
definitivamente.... y aún así está de sobra mysql_real_escape_string() ya que se asume que tu función formato_correcto() previene el formato, digamos que solo permites letras, números y espacios, con lo cual dicha función de escape no ayudaría en lo absoluto...

en general dicha función de escape debes utilizarla en datos que realmente no deseas controlar, o bien se sale de tu control... por ejemplo para el comentario de un libro de visitas tienes dos alternativas: escapas el contenido, o lo filtras... que no son la misma cosa... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 24/03/2010, 18:53
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

¿ por ejemplo, que caracteres escapa mysql_real_escape_string() ?
Es que en casi todos los formularios que tengo para la entrada de datos uso funciones de validación de datos y además a cada valor le aplico individualmente mysql_real_escape_string()

Por ejemplo lo uso para, textos, fechas, etc.

Lo hago mas que nada para evitar SQL inyection
  #8 (permalink)  
Antiguo 24/03/2010, 19:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

te invito a leer el manual de PHP, ahí viene información detallada acerca de la función... así como de los caracteres que escapa, principalmente: \, ', ", etc...

mysql_real_escape_string()
http://php.net/mysql_real_escape_string
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 24/03/2010, 19:09
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

Una cosilla más:

Es cierto que escapa las comillas cuando utilizas mysql_real_escape_string() al introducir texto de tal forma que al escribir esto

""

una vez insertado en la bd y mostrado te lo muestra así:

\" \"

pero entonces que solución existe, porque no me gustaría quitar mysql_real_escape_string() y en las funciones de validación no puedo impedir al usuario que inserte una comilla
  #10 (permalink)  
Antiguo 24/03/2010, 19:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

en todo caso al imprimir el valor puedes usar stripslashes(), pero pon atención a lo siguiente: el escapar las comillas debería servir solo al almacenar dicha variable, una ves almacenado el valor y al recuperarlo las barras invertidas de escape deberían desaparecer...

en todo caso, si persisten puedes usar la función citada anteriormente o bien, debe ser producto de la configuración de magic_quotes que en todo sentido debería estar desactivada...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 24/03/2010, 19:22
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

Muchisimas gracias ya he tocado el php.ini y he puesto la directiva en Off.
Bueno entonces en definitiva ya se los pasos a seguir.

Si tienes algún consejo más que darme, lo leeré.

Muchas gracias de verdad.
  #12 (permalink)  
Antiguo 24/03/2010, 19:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

pues te recomiendo investigues a fondo lo que es una inyección de SQL, una ves lo comprendas notarás la diferencia entre filtrar y escapar valores... ;)

una ves lo consigas descubrirás formas mas seguras de trabajar con variables externas, etc..
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 24/03/2010, 19:36
 
Fecha de Ingreso: julio-2009
Mensajes: 64
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: usar mysql_real_escape_string en $_FILES y $_SESSION

Ok. gracias

Etiquetas: files, session
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 10:39.