2012-01-25 7 views
18

Estoy investigando las mejores prácticas de seguridad de PHP y específicamente la biblioteca HTML Purifier.¿Qué hace HTML Purifier que la programación segura de PHP no puede?

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. En primer lugar, una pregunta general .. ¿Qué hace HTML Purifier que la práctica de programación segura de PHP no puede?

  2. Si uso HTML Purifier, ¿eso significa que me saltee las 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 this question parece sugerir que HTML Purifier solo se necesita para los elementos que permiten etiquetas HTML, como los editores WYSIWYG. ¿Es esto correcto?

  4. ¿Alguien ha notado un retraso en el rendimiento al utilizar HTML Purifier? This article hace que parezca que vale la pena considerar el impacto en el rendimiento.

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

Sólo para confirmar que he hecho mi tarea antes de hacer esto ...

  • This question es esencialmente la misma que la mía, pero la respuesta solitario parece simplemente una lista de las mejores prácticas que otra el autor de la pregunta se olvidó de mencionar

  • This 'bountiful' question es un excelente recurso sobre purificador HTML y HTML5, pero asume conocimientos básicos

  • Este comparison page en el sitio de Purificador HTML es más de una comparación con otros filtros

+0

El propósito principal del purificador de HTML es evitar ataques XSS, especialmente si su sitio obtiene algún contenido del usuario. ¿Cuál es su definición de programación de php segura? ¿Incluye la prevención xss? – bertzzie

+0

La prevención XSS es definitivamente una gran parte de cómo defino la programación segura de PHP. Filtrado/escape y objetivo de prevención XSS específicamente a través del uso liberal de htmlentities(). ¿El foco de HTML Purifier en XSS significa que reemplaza htmlentities() de alguna manera, o seguiría usando esa función? – cantera

Respuesta

18

Hay dos extremos al aceptar cualquier entrada de sus usuarios:

  1. escapar Indiscriminadamente todo para las entidades HTML, por lo que la el usuario no puede inyectar nada Esto es 100% seguro, pero no permite al usuario agregar ningún HTML, por ejemplo, negrita texto y similares.
  2. Imprima el contenido tal como lo recibió del usuario. Esto le permite al usuario <b> texto en negrita </b >, pero también para inyectar secuencias de comandos o problemas con su HTML de cualquier otra forma que el usuario desee, intencionalmente o no.

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

Es lo único que se supone que se debe usar. No abandones tus otras prácticas de seguridad. De hecho, evitaría todo el asunto por completo al permitirles a los usuarios usar solo un lenguaje de marcado controlado para diseñar su entrada, como Markdown (que usa Stackoverflow).

+0

Gran respuesta. Para aclarar, ¿está diciendo que la "lista blanca HTML" es la única razón para utilizar HTML Purifier? Si es así, probablemente no sea para mí; trato principalmente con entradas de formularios donde el código HTML nunca sería aceptado. Si el enfoque de HP es realmente tan estrecho, parece que debería aclararse en el sitio web de HP, o quizás en una entrada de Wikipedia. – cantera

+2

Sí, eso es lo que hace. Eso también se expresa muy explícitamente en su sitio web IMO: 'HTML Purifier es una biblioteca de filtro HTML que cumple con los estándares escrita en PHP. HTML Purifier no solo eliminará todos los códigos maliciosos (más conocidos como XSS) con una lista blanca completamente auditada, segura pero permisiva, ... ':-P – deceze

+0

Honestamente me lo perdí, incluso después de ver el tutorial de Zendcasts y leer la mayor parte del sitio web . Aunque incluso después de volver a leer el fragmento que publicó, todavía lo interpreto como un "purificador multiuso", no solo para wysiwyg y similares. Gracias por aclararlo. – cantera

Cuestiones relacionadas