php security htmlpurifier

¿Qué hace HTML Purifier que la programación segura de PHP no puede?



security htmlpurifier (1)

Estoy investigando las mejores prácticas de seguridad de PHP y específicamente la biblioteca Purificador de HTML .

Me gusta la idea de usar una biblioteca de terceros para ayudar a fortalecer la seguridad de mis sitios, pero estoy confundido acerca de algunas cosas ...

  1. Primero, una pregunta general ... ¿Qué hace HTML Purifier que practicar la programación segura de PHP no puede?

  2. Si estoy usando el Purificador de HTML, ¿eso significa que puedo omitir medidas de seguridad comunes como usar las funciones de PHP para filtrar la entrada y escapar de la salida?

  3. Uno de los comentarios de respuesta para esta pregunta parece sugerir que el purificador de HTML solo es necesario para los elementos que permiten etiquetas HTML, como los editores WYSIWYG. ¿Es esto correcto?

  4. ¿Alguien ha notado un retraso en el rendimiento al usar HTML Purifier? Este artículo hace que parezca que vale la pena considerar el impacto en el rendimiento.

  5. ¿Hay tutoriales actualizados sobre la integración de HTML Purifier con una aplicación PHP que no sea de marco? Todo lo que he encontrado es old o framework-specific .

Solo para confirmar que he hecho mi tarea antes de preguntar esto ...

  • Esta pregunta es esencialmente la misma que la mía, pero la única respuesta parece enumerar otra buena práctica que el autor de la pregunta olvidó mencionar.

  • Esta pregunta "abundante" es un excelente recurso sobre HTML Purifier y HTML5, pero supone un conocimiento fundamental.

  • Esta página de comparación en el sitio de HTML Purifier es más que una comparación con otros filtros


Hay dos extremos al aceptar cualquier entrada de sus usuarios:

  1. Escapa indiscriminadamente de todo a las entidades HTML, para que el usuario no pueda inyectar nada. Esto es 100% seguro, pero no permite al usuario agregar ningún HTML, por ejemplo, para texto en negrita y similares.
  2. Muestra el contenido tal como lo recibiste del usuario. Esto le permite al usuario <b> texto en negrita </b>, pero también inyectar scripts o meterse con su HTML en cualquier otra forma que el usuario desee, intencional o involuntariamente.

El Purificador de HTML permite un término medio: permite al usuario inyectar algo de HTML, pero no HTML malicioso . Eso es algo complicado de intentar, por supuesto, pero el Purificador de HTML es supuestamente una de las pocas bibliotecas, si no la única, que lo hace bien.

Eso es lo único para lo que se supone que se debe usar. No abandones tus otras prácticas de seguridad. De hecho, evitaría todo el problema al permitir que los usuarios solo usaran un lenguaje de marcado controlado para personalizar su entrada, como Markdown (que usa ).