Foros del Web » Programando para Internet » PHP »

Sobre mysql_real_escape_string

Estas en el tema de Sobre mysql_real_escape_string en el foro de PHP en Foros del Web. Buenas gente, recien estoy empezando a implementar esta funcion de seguridad para evitar inyecciones SQL, el problema es que en una especie de libro de ...
  #1 (permalink)  
Antiguo 26/02/2011, 09:58
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Sobre mysql_real_escape_string

Buenas gente, recien estoy empezando a implementar esta funcion de seguridad para evitar inyecciones SQL, el problema es que en una especie de libro de visitas que tengo, cuando alguien pone inocentemente comillas dobles o simples aparece antes siempre el ' / ' ya que lo guarda así en la base de datos, lo cual no queda muy bien que digamos, preguntas:

1) hay alguna manera de evitar que se guarde en la base de datos el ' / ' ?
2) son mysql_real_escape_string junto con strip_tags suficientes como para mantener cierto nivel de seguridad alto en el manejo de formularios?

Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 26/02/2011, 11:02
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sobre mysql_real_escape_string

Cita:
1) hay alguna manera de evitar que se guarde en la base de datos el ' / ' ?
2) son mysql_real_escape_string junto con strip_tags suficientes como para mantener cierto nivel de seguridad alto en el manejo de formularios?
1. ¿Tienes magic_quotes_gpc() activado en tu php.ini?
2. En cuanto a inyección SQL y XSS se refiere, si.
  #3 (permalink)  
Antiguo 26/02/2011, 11:47
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Sobre mysql_real_escape_string

Cita:
Iniciado por Ronruby Ver Mensaje
2. En cuanto a inyección SQL y XSS se refiere, si.

carajo y yo pensaba que no
en cuanto terminara mi web me pondria a investigar ataques xss para protgerme, y veo que ya estoy protegido
  #4 (permalink)  
Antiguo 26/02/2011, 15:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sobre mysql_real_escape_string

Al menos en un sistema de comentarios, por ejemplo, si usas strip_tags y mysql_real_escape_string(), no te deberias preocupar por XSS.
Realmente depende del tipo de script y lo que hace, no todo se resuelve con 2 funciones claro esta.
  #5 (permalink)  
Antiguo 26/02/2011, 15:31
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Sobre mysql_real_escape_string

muy cierto ronruby :) +1
  #6 (permalink)  
Antiguo 26/02/2011, 15:49
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 12
Respuesta: Sobre mysql_real_escape_string

Cita:
Iniciado por memoadian Ver Mensaje
carajo y yo pensaba que no
en cuanto terminara mi web me pondria a investigar ataques xss para protgerme, y veo que ya estoy protegido
Nunca está de más investigar a fondo sobre cómo protegernos de estos tipos de ataques. A mí me está comenzando a gustar mucho el tema de la seguridad sobre plataformas Web. Sería fantástico si algún compañero sabe de páginas con info al respecto y que nos las deje aquí en un simple enlace para cada una.

Saludos!
  #7 (permalink)  
Antiguo 26/02/2011, 15:56
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sobre mysql_real_escape_string

Cita:
Iniciado por MaxDgy Ver Mensaje
Nunca está de más investigar a fondo sobre cómo protegernos de estos tipos de ataques. A mí me está comenzando a gustar mucho el tema de la seguridad sobre plataformas Web. Sería fantástico si algún compañero sabe de páginas con info al respecto y que nos las deje aquí en un simple enlace para cada una.

Saludos!
Aqui en este sitio hay unas cuantas informaciones para protegerse de cierto tipo de ataques:
http://phpsec.org/projects/guide/2.html
  #8 (permalink)  
Antiguo 26/02/2011, 17:26
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sobre mysql_real_escape_string

Cita:
Iniciado por Ronruby Ver Mensaje
1. ¿Tienes magic_quotes_gpc() activado en tu php.ini?
Gracias por contestar.

acabo de hacer un phpinfo y sí, magic_quotes_gpc está en ON

el php.ini no puedo tocarlo, busqué info sobre como desactivarlo, hice un .htaccess primero probé con php_flag magic_quotes_gpc Off y luego con php_value magic_quotes_gpc Off
en ambos casos no solo no soluciona el tema sino que me tirá un Internal Error 500
así que saqué el .htaccess y dejé como estaba todo con las ' / '

no se como solucionarlo :(
  #9 (permalink)  
Antiguo 26/02/2011, 17:47
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Sobre mysql_real_escape_string

cual es el problema de que se guarde en la base de datos el / slash?
  #10 (permalink)  
Antiguo 26/02/2011, 18:08
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sobre mysql_real_escape_string

lo dije al principio, que aparece cada vez que alguien pone comillas simples o dobles, cosa que no queda para nada bien que aparezca algo así por ejemplo: dijo que \"no quería\" venir.
  #11 (permalink)  
Antiguo 26/02/2011, 18:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sobre mysql_real_escape_string

Cita:
Iniciado por fedonte Ver Mensaje
lo dije al principio, que aparece cada vez que alguien pone comillas simples o dobles, cosa que no queda para nada bien que aparezca algo así por ejemplo: dijo que \"no quería\" venir.
¿El problema es que no quieres que al imprimirlo salgan los '\'? O simplemente no quieres almacenar el dato con ese backslash?
Si no quieres almacenarlo asi, deberías cambiar esa directiva o en caso de no poder definitivamente por .htaccess o directamente en el php.ini seria entonces hacer un cambio a los scripts que insertan los datos.
  #12 (permalink)  
Antiguo 26/02/2011, 18:59
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Sobre mysql_real_escape_string

Es que ami nunca me hadado ese problema, al imprimir me imprime normal, y quitar esa funcion podria sder catastrofico, si a ti, si te los imprime, puedes usar una funcion que los quite al imprimir, pero que raro se me hace.
  #13 (permalink)  
Antiguo 26/02/2011, 19:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sobre mysql_real_escape_string

Se que podría hacer una función para que no los imprima y de última voy a hacer eso, pero mi idea en realidad es que no se guarden en la base de datos, ya que nunca se sabe cuando se va a necesitar un '/' real.

Ronruby, que tipo de script sería ese? yo recibo el dato y hago algo asi de sencillo antes de insertarlo en la base:
$comentario = mysql_real_escape_string($_POST["comentario"]);

memoadian, en que sentido puede ser catastrófico apagar esa funcion? ya que estoy pensando en mandar a mi proveedor de hosting un email para que pongan magic_quotes_gpc en Off
  #14 (permalink)  
Antiguo 26/02/2011, 19:31
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sobre mysql_real_escape_string

Cita:
Iniciado por memoadian Ver Mensaje
Es que ami nunca me hadado ese problema, al imprimir me imprime normal, y quitar esa funcion podria sder catastrofico, si a ti, si te los imprime, puedes usar una funcion que los quite al imprimir, pero que raro se me hace.
No se recomienda el uso de esa directiva, de hecho en PHP 5.3 esa funcion esta deprecated
http://php.net/manual/en/security.magicquotes.php

Cita:
Se que podría hacer una función para que no los imprima y de última voy a hacer eso, pero mi idea en realidad es que no se guarden en la base de datos, ya que nunca se sabe cuando se va a necesitar un '/' real.

Ronruby, que tipo de script sería ese? yo recibo el dato y hago algo asi de sencillo antes de insertarlo en la base:
$comentario = mysql_real_escape_string($_POST["comentario"]);
A la hora de insertar un \, se inserta otro mas para escaparlo \\ asi que no habria problema con solo hacerlo cuando se imprima.

De todas maneras, tendrias que hacer lo siguiente en donde se insertan los datos

Código PHP:
<?php

$variable 
get_magic_quotes_gpc() ? stripslashes($variable) : $variable ;
$variable mysql_real_escape_string($variable);

?>
Creo es asi, lo que hace es que si esta activada, le quita los \ e inserta los datos usando mysql_real_escape_string en su lugar.
  #15 (permalink)  
Antiguo 26/02/2011, 20:53
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sobre mysql_real_escape_string

gracias Ronruby! probé ese codigo y parece andar perfecto

en total me queda algo así, es un poco largo pero ya crearé una función para hacerlo con cada item de formulario:

$comentario = $_POST["comentario"];
$comentario = get_magic_quotes_gpc() ? stripslashes($comentario) : $comentario ;
$comentario = mysql_real_escape_string($comentario);
$comentario = strip_tags($comentario);
$comentario = utf8_decode($comentario);
$comentario = wordwrap($comentario, 50, "\n", true);
  #16 (permalink)  
Antiguo 26/02/2011, 21:32
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sobre mysql_real_escape_string

Cita:
en total me queda algo así, es un poco largo pero ya crearé una función para hacerlo con cada item de formulario:
Asi es, crea una funcion para que se haga menos tedioso ;)

Etiquetas: Ninguno
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 17:49.