Restrict JS en SVGs

8

¿Alguien sabe de alguna manera de evitar que JS se ejecute dentro de un SVG o que elimine JS de un SVG? En mi caso de uso, prefiero mantener la imagen como SVG y no convertirla a JPG. He pensado en eliminar las etiquetas de script y los atributos, pero preferiría evitar un enfoque de lista negra. Alternativamente, he considerado un enfoque de lista blanca de todos los atributos y etiquetas, pero la lista es masiva. ¿Alguna idea sobre cómo abordar esto?

    
pregunta winhowes 12.01.2018 - 09:16
fuente

2 respuestas

4
  

¿Alguien sabe de una manera de evitar que JS se ejecute dentro de un SVG?

Si incrusta un SVG como imagen, se garantiza que no se ejecutará ningún JS contenido:

<img src="https://example.com/dangerous.svg">

Comoefectosecundario,estotambiénevitaqueelSVGcarguecualquierrecursoexterno.(Consultetambién: SVG como imagen )

Si te sientes elegante, un sandbox de iframe también evitaría la ejecución de cualquier código de script:

<iframe sandbox src="https://example.com/dangerous.svg"></iframe>

TengaencuentaquesiestáalojandoSVGproporcionadosporelusuario,asegúresedequelosusuariosnopuedanverlosdirectamenteenelnavegador(escribiendohttps://yoursite.example/user-images/dangerous.svgenlaURL)yaqueesoactivaríaelXSSdetodosmodos.Ensulugar,debeservirarchivosnoconfiablescomoarchivosadjuntos.(Consultetambién: ¿Es seguro almacenar y reproducir los tipos de mimos proporcionados por el usuario? )

    
respondido por el Arminius 12.01.2018 - 15:03
fuente
2

Use una herramienta de biblioteca / software existente que pueda analizar y convertir SVG, y que le permita eliminar scripts. Una regla importante en la seguridad es evitar reinventar la rueda si puede evitarla.

La biblioteca que se va a usar está fuera del alcance de este sitio, pero podría intentar buscar (y posiblemente preguntar) en enlace , o en enlace , particularmente debajo de la etiqueta svg .

Como de costumbre, lea (y atienda) las pautas de las preguntas de un sitio (por ejemplo, ¿Qué se requiere para que una pregunta contenga "suficiente información"? ) antes de preguntar.

    
respondido por el sleske 12.01.2018 - 14:01
fuente

Lea otras preguntas en las etiquetas