Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

102
Vistas
Desinfecte el contenido de la imagen y elimine el Javascript incrustado

Para una API de carga de imágenes que estamos construyendo, ¿hay alguna guía sobre la verificación/desinfección de contenido malicioso?

He visto ejemplos en Internet donde podemos agregar JavaScript dentro de una imagen y subirlo a cualquier API de carga de archivos. Si tuviéramos que representar la imagen tal como está usando el elemento en otro lugar, el navegador ejecutará ese código JS incrustado.

Mientras buscaba consejos de mitigación, encontré este enlace en los documentos de OWASP. Su recomendación es reescribir las imágenes usando la biblioteca Apache Commons Imaging, pero no estoy seguro de si se mantiene activamente (última actualización en 2020)

¿Hay una mejor manera de detectar JS incrustado en imágenes (o) alguna forma segura de representar estas imágenes en el navegador para mitigar los ataques XSS almacenados?

Agradezco cualquier ayuda en esto.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Hay varias formas de mitigar xss en las cargas de archivos de imagen.

Sigue estos pasos,

  • No permita ningún otro tipo de archivo aparte de las imágenes. (Por ejemplo: solo acepte archivos con tipo de contenido: image/png , image/jpg , image/jpeg , image/gif )
  • Guarde siempre el archivo con una extensión adecuada, nunca permita que el usuario controle la extensión del nombre del archivo. (Puede guardar el archivo usando un nombre completamente aleatorio para mitigar esto, use GUID/UUID para generar un nombre aleatorio para la imagen)
  • Establezca el tipo de contenido de la respuesta HTTP en image/<type> . (Los navegadores no ejecutarán ningún javascript si el tipo de contenido es image/* )
  • Solo use la <img src="[path-to-img]"> para representar la imagen y no permita que el usuario controle ningún valor de HTML aquí.
  • Si permite que los usuarios carguen imágenes svg , entonces debe desinfectar el contenido del archivo porque los archivos SVG están creados con XML. Entonces, use algo como sanitize-svg para eliminar el contenido malicioso de los datos cargados.
  • Use CSP para evitar XSS (Opcional, mejor si puede implementar)

Si sigue los pasos anteriores, prácticamente no hay posibilidades de obtener XSS. (Actualmente - 2022-04-09)
Por lo tanto, si solo desea protegerse contra los ataques XSS, no es necesario desinfectar o detectar contenido malicioso de los datos cargados.

[ADVERTENCIA]: si procesa los datos cargados en el lado del servidor para cualquier otra cosa (cambiar el tamaño, recortar) , debe eliminar cualquier contenido malicioso antes de hacerlo.

Finalmente, asegúrese de revisar esta hoja de trucos de mitigación XSS de OWASP.

Espero que esto ayude.

about 4 years ago · Juan Pablo Isaza Denunciar

0

El proceso de manejo de imágenes que encontró en los documentos de OWASP es generalmente un buen enfoque.

Si está realmente preocupado por algún contenido malicioso que:

  1. Maneje la reescritura de la imagen en un entorno desechable (VM o contenedor) donde no sea un problema si se ve comprometida.
  2. Mantenga/almacene el archivo cargado en 2-3 fragmentos en el host y solo ensámblelo en la máquina virtual.

Editar:

Además, puede usar la Política de seguridad de contenido para proteger, en el lado del cliente, a los usuarios contra ataques XSS.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda