Foros del Web » Programando para Internet » PHP »

seguridad

Estas en el tema de seguridad en el foro de PHP en Foros del Web. Hola , Tengo una duda por la cual tengo bastante miedo. Quiero poner un <textarea> en el cual los usuarios pueden enviar sus codigos php ...
  #1 (permalink)  
Antiguo 08/02/2009, 12:58
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
seguridad

Hola,

Tengo una duda por la cual tengo bastante miedo. Quiero poner un <textarea> en el cual los usuarios pueden enviar sus codigos php js asp y demas. Ahora mi problema es que eso puede ser inseguro para guardar en la base de datos. Porque gente con poca capacidad intelectual te puede poner un codigo malicioso para arruinarte todo el trabajo.

Hay alguna manera de que la gente pueda enviar esos codigos de forma segura???
  #2 (permalink)  
Antiguo 08/02/2009, 13:24
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: seguridad

Convertir todo a sus equivalentes HTML usando htmlentities() o htmlspecialchars().
De esa manera el codigo no se "interpreta".
  #3 (permalink)  
Antiguo 08/02/2009, 13:45
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: seguridad

ok, pero despues cuando recupero el valor de la base de datos me va a aparecer con todas las barrainvertidas(\), como hago para eliminarlas??, no quiero eliminar todas las barras, sola las que agrega htmlentities()

Muchas gracias.
  #4 (permalink)  
Antiguo 08/02/2009, 14:02
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: seguridad

htmlentities() no agrega ninguna barra al texto. Las barras son agregadas usando addslashes(), pero si tienes la directiva magic_quotes activada en tu php.ini (lo cual es no recomendable) todos los textos llegados por POST o GET tendrán esas barras de escape automáticamente. Para quitarlas usa stripslashes().

Ahora, no hay que confundir cosas. El tener HTML en un texto que se quiera insertar a una base de datos no es ni más ni menos riesgoso que insertar un texto "normal". Para insertar cualquier dato de forma segura a una base de datos basta con usar mysql_real_escape_string(). Con eso previenes los ataques de Inyección SQL (SQL Injection) sin modificar de manera real los datos que estás insertando. Para mostrarlos luego tienes otros riesgos si tienes HTML. Ahí te podrían ser útiles htmlentities() o htmlspecialchars() si quieres mostrar el código HTML literalmente, o en todo caso, si necesitas "ejecutar" ese código HTML en el navegador te puedes proteger usando strip_tags(). Otra cosa a tener en cuenta cuando le das a tus usuarios el poder de manejar el HTML de tu sitio es el XSS. Para eso también hay funciones que te ayudan a protegerte.

Como ves hay diferentes tipos de riesgos, y para cada uno de ellos hay una solución. No uses indiscriminadamente todas las que encuentras, sino que estúdialas y selecciona aquellas que te vayan a ser útiles para lo que deseas hacer.

Bastante por buscar, eh?
  #5 (permalink)  
Antiguo 09/02/2009, 16:07
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: seguridad

Alguien me puede dar un ejemplo de mydql_real_escape_string()

Se lo agradeceria mucho. Porq estoy usando y no entiendo muy bien
  #6 (permalink)  
Antiguo 09/02/2009, 16:15
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: seguridad

?

Código PHP:
$variable_segura mysql_real_escape_string($variable
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 18:42.