2010-01-18 16 views
5

Estoy buscando una biblioteca PHP simple que ayude a filtrar las vulnerabilidades XSS en PHP Markdown. ES DECIR. PHP Markdown analizar cosas como:PHP Markdown XSS Sanitizer

[XSS Vulnerability](javascript:alert('xss')) 

he estado leyendo alrededor y la mejor que he encontrado sobre el tema aquí fue this cuestión.

Aunque HTML Purifier parece la mejor solución (casi solo), me preguntaba si había algo más general. HTML Purifier parece ser un poco robusto, especialmente para mis necesidades, así como un dolor para configurar, aunque parece que funcionaría excelente después de hacerlo.

¿Hay algo más que pueda ser un poco menos robusto y configurable pero que aún así haga un trabajo sólido? ¿O debería excavar y comenzar a tratar de configurar HTML Purifier para mis necesidades?

EDITAR POR LA CLARIDAD: No estoy buscando recortar las esquinas ni nada por el estilo. HTML Purifier ofrece mucho control fino y para un proyecto pequeño y simple que no requiere mucho control, aunque tampoco es una opción. Aquí es de donde venía cuando pedí algo más simple o menos robusto.

también una nota final, estoy NO en busca de sugerencias para utilizar htmlspecialchars(), strip_tags() o algo por el estilo. Ya rechazo el HTML incrustado en PHP Markdown Extra al desinfectarlo de una manera similar. Estoy buscando maneras de prevenir las vulnerabilidades XSS en PHP Markdown OUTPUT.

Gracias.

Respuesta

6

Nunca he oído hablar de otra herramienta que HTML Purifier, y HTML Purifier sí tiene una buena reputación.

Tal vez sea "un poco robusta " y "un dolor para configurar", sí; pero también es probablemente la solución más utilizada y probada disponible en PHP ;; y esos son criterios importantes cuando tiene que elegir un componente tan importante.

Incluso si significa invertir medio día para configurarlo correctamente, si estuviera en su situación, probablemente elegiría HTML Purifier.

+0

Sí, supongo que mis comentarios sobre el tema salieron como si no me importara demasiado, lo cual no es cierto. Solo esperaba que hubiera algo por ahí un poco más general. HTML Purifier le da un control detallado sobre cada aspecto de sí mismo que realmente no necesito para mi proyecto actual. Aunque no usar nada o algo extremadamente básico tampoco es una opción. ¿Ya sabes? – anomareh

3

No existe tal cosa como demasiado robusto. El HTML "Sanitizing" es hard. Cualquier esquina que corte para procesarla de forma más simple puede dar como resultado que exploten furtivamente. Incluso el viejo HTMLPurifier complicado, con su reputación de la mejor clase, ha tenido múltiples formas de escaparse marcas peligrosas en el pasado.

Sin embargo, si su solución de etiquetado de texto es capaz de generar HTML peligroso, entonces es deficiente y se debe reemplazar IMO. Si PHP Markdown permite las URL javascript: es un defecto bastante lamentable y básico, y no creo que confíe en que logre algo más.

+0

Mi problema con HTML Purifier fue que te da una inmensa cantidad de control fino sobre cada aspecto de sí mismo. No busco cortar las esquinas, solo algo un poco más simple cuando se trata de configuración, ya que para un pequeño proyecto en el que estoy trabajando no necesito ese control preciso. Aunque no usar nada tampoco es una opción. En cuanto a PHP Markdown va AFAIK es la única implementación PHP de Markdown que conozco y su propósito es analizar Markdown en HTML válido. Ese enlace es HTML válido aunque puede ser dañino. No se anuncia como seguro ni como un objetivo de seguridad. – anomareh

0

HTMLPurifier es una buena respuesta y quizás la solución más robusta.

También es posible utilizar Markdown de una manera relativamente segura, pero tiene que usarlo de la manera correcta. Para detalles sobre cómo usar Markdown de forma segura, mira here. Consulte el enlace para obtener detalles sobre cómo usarlo de manera segura, pero la versión corta es: es importante utilizar la última versión, establecer safe_mode y establecer enable_attributes=False.

1

Tuve una sugerencia, y yo asked on SO to find out if it would work pero lamentablemente, se cerró y marcó como duplicado a esta pregunta.

Mi sugerencia es la modificación de código de reducción del precio y permitiendo que sólo los vínculos y las fuentes de imagen para empezar http://, https:// o ftp:// que cubre todos los protocolos comunes requeridos. Si el enlace no comienza con uno de estos, entonces debe dejarse sin cambios en la salida.