¿Está eliminando JavaScript de HTML para evitar XSS?

1

Tengo un ejercicio para parchar una versión anterior de mi trabajo de la clase electrónica de la universidad. Está escrito en PHP y requiere la versión 5.3.27. Una de las cosas que quiero parchear es prevenir el XSS. El sitio utiliza un editor antiguo (xinha) que admite entradas HTML sin ninguna validación, por lo que XSS es extremadamente fácil de hacer.

No tengo permiso para cambiar el editor, así que tengo la intención de cambiar la validación del lado del servidor antes de usar / almacenar la entrada del usuario para bloquear las funciones de eventos (como onerror, onmouseover, etc.) y JavaScript. Después de algunas investigaciones no encontré ninguna forma (infalible) de filtrar JavaScript de HTML. Bloquear caracteres especiales de HTML no funcionará para mí porque romperá las etiquetas HTML. ¿Alguna idea?

    
pregunta George Sp 16.04.2017 - 13:22
fuente

2 respuestas

1

Filtrar JavaScript desde HTML es algo muy complicado de hacer, especialmente si no puede restringir las etiquetas y los atributos permitidos a un conjunto pequeño (o, preferiblemente, ninguno). Hacer esto bien es sorprendentemente complicado y hay muchos escollos. Un error es todo lo que se necesita para ser vulnerable.

Así que no hagas esto por tu cuenta. Utilice una biblioteca existente, probada y probada. Para PHP, HTML Purifier es popular, pero estoy seguro de que hay más opciones disponibles.

Además, debe usar una política de seguridad de contenido restrictiva, si es posible. Pero no confíe en eso como su única línea de defensa.

    
respondido por el Anders 18.04.2017 - 12:58
fuente
1

Si debe permitir HTML, utilice algo probado y comprobado, como Google Caja para desinfectarlo antes de permitir que salga a tu página.

Tenga en cuenta que es probable que todos los desinfectantes tengan algunas vulnerabilidades no descubiertas. p.ej. HTML Purifier ha tenido estos en el pasado , y Google Caja también tiene , por lo tanto, esta no es una solución sólida y deberá actualizar periódicamente la biblioteca elegida para mitigar este riesgo.

Lanzar tu propia solución conllevaría un riesgo mucho mayor. Además, asegúrese de implementar una Política de seguridad de contenido sólida y que usted no solo las fuentes de la lista blanca que no contendrán nada que pueda hacer que su sitio sea vulnerable (incluso Google CDN contiene versiones antiguas y vulnerables de JQuery):

https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
    
respondido por el SilverlightFox 18.04.2017 - 13:22
fuente

Lea otras preguntas en las etiquetas