Pregunta

Después he implementado mis funciones de higienizar (de acuerdo con aspectos específicos solicitados), mi jefe decidió cambiar la entrada aceptada. Ahora quiere mantener un poco de etiqueta específica y sus atributos. Sugerí a poner en práctica un lenguaje BBCode-como que es más seguro en mi humilde opinión, pero él no quiere, ya que sería mucho trabajo.

Esta vez me gustaría que sea sencillo, así que no lo mataré la próxima vez que me pide que cambie de nuevo esta cosa. Y sé que lo hará.

¿Es suficiente con utilizar por primera vez el strip_tags con el parámetro de etiqueta para preservar y luego htmlentities ?

¿Fue útil?

Solución

strip_tags no se traduce necesariamente en el contenido seguro. strip_tags seguido por htmlentities sería seguro, en el que cualquier cosa codificada en HTML es segura, pero no tiene ningún sentido.

O bien el usuario está introduciendo texto plano, en cuyo caso debe ser de salida usando htmlspecialchars (con preferencia a htmlentities), o lo están introduciendo HTML marcado, en cuyo caso es necesario analizar correctamente, la fijación de marcas roto y la eliminación elementos / atributos que no están en una lista blanca de seguridad.

Si eso es lo que desea, utilice una biblioteca existente de hacerlo (por ejemplo. htmlpurifier ). Porque no es una tarea trivial y si uno se equivoca usted se ha dado agujeros de seguridad XSS.

Otros consejos

Puede seguir utilizando etiquetas específicas strip_tags con esta sintaxis: strip_tags($text, '<p><a>');

Este recorte sería despojar a todas las etiquetas excepto p y a. Los atributos se mantienen durante etiquetas que ha permitido (p y a en el ejemplo anterior).

Sin embargo, esto no significa que los atributos son seguros. Es lo que quiere o atributos específicos es lo que quiere para mantener todos ellos en etiquetas permitidas? Para el primer caso, se tendría que analizar cada etiqueta y retirar los deseados, desinfectar los valores. Para mantener todos los atributos de etiquetas permitidas, que todavía tienen que desinfectar ellos. Yo recomendaría correr htmlentities en los valores de atributos para desinfectar ellos (por pantalla, yo supongo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top