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.
Hay varias formas de mitigar xss en las cargas de archivos de imagen.
Sigue estos pasos,
image/png , image/jpg , image/jpeg , image/gif )image/<type> . (Los navegadores no ejecutarán ningún javascript si el tipo de contenido es image/* )<img src="[path-to-img]"> para representar la imagen y no permita que el usuario controle ningún valor de HTML aquí.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. 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.
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:
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.