¿La representación del contenido proporcionado por el usuario implica una vulnerabilidad xss?

2

Estoy trabajando en un programa de chat en mi tiempo libre. Si un usuario ingresa html, se representará, por ejemplo, <a href="example.com">link</a> generará un hipervínculo. Al mismo tiempo, si utiliza una etiqueta de script, el script no parece ejecutarse, pero se inserta en el dom. ¿Debería estar preocupado?

Editar: Cuando solucioné la vulnerabilidad, aquí está el sitio para cualquier persona interesada. wezelchat.herokuapp.com Y el repositorio en github .

    
pregunta The_Bob 29.10.2018 - 20:39
fuente

2 respuestas

5

Sí, parece que deberías estar preocupado.

Le sugiero que eche un vistazo a la extensa hoja de trucos de pruebas XSS de OWASP y vea si puede obtener una ventana emergente en su sitio (lo que indica que es vulnerable a XSS).

Una buena para jugar es insertar javascript en una etiqueta de imagen:

<img src="javascript:alert('XSS');">

o

<img src=doesnotexist onerror="alert('XSS')">

Si necesita que los usuarios puedan enviar HTML, debe crear una lista de permisos para decidir qué etiquetas HTML (y qué atributos dentro de esas etiquetas) se cargan en el DOM, y todo lo demás se representa como texto. Sin embargo, esto puede ser realmente complicado, por ejemplo, <img src="https://...">podríaestarbien,pero<imgsrc="javascript:..."> no lo está. Esto se convierte rápidamente en un juego de whack-a-mole que la hoja de trucos de OWASP es probable que gane.

En algún momento, puede ser más sencillo pasar de que los usuarios envíen HTML a algún tipo de biblioteca de rebajas estándar (como stackexchange o github) para evitar por completo el juego de listas blancas.

TL; DR: si está permitiendo HTML arbitrario, es probable que tenga un problema de XSS.

    
respondido por el Mike Ounsworth 29.10.2018 - 20:49
fuente
5

Yo recomendaría contra HTML. A menos que dedique un tiempo considerable a fortalecer su configuración de servidor (OWASP), las cargas de HTML son una invitación al abuso. En su lugar, podría considerar un lenguaje menos poderoso (y, por lo tanto, menos riesgos de seguridad) como, por ejemplo, Reducción. El punto clave es que usted tiene un control mucho más cercano sobre lo que contendrán los documentos.

    
respondido por el c-alpha 31.10.2018 - 14:14
fuente

Lea otras preguntas en las etiquetas