Tema: seguridad
Ver Mensaje Individual
  #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?