La carga del archivo no está verificando el tipo mime

0

Por lo tanto, tengo una funcionalidad de carga donde la extensión del tipo de archivo se verifica correctamente (y actualmente no se puede omitir). Pero el tipo mime no está marcado. ¿Esto me deja con algún riesgo residual o posibles "ataques"? Donde me refiero a ataques en un sentido muy amplio donde es posible cargar un archivo que no debería haber sido subido.

Estoy especialmente interesado en el riesgo para mis usuarios que pueden descargar archivos de otros usuarios. Entonces, un usuario lo carga y el otro lo descarga con su navegador y lo abre en su máquina no muy segura.

    
pregunta Wealot 14.11.2017 - 12:38
fuente

2 respuestas

2

El tipo mime no está integrado en el archivo de ninguna manera. Incluso se podría decir que los archivos no tienen tipos mime. Claro, quienquiera que haya creado el archivo puede tener la intención de que sea de un determinado tipo, pero en el disco es solo una cadena de unos y ceros.

El lugar donde se encuentran los tipos mime en el contexto de la carga de archivos se encuentra en los encabezados HTTP, tanto cuando el archivo se carga a usted como cuando el archivo es descargado por sus usuarios. Tenga en cuenta que un atacante podría intentar enviar cualquier archivo con cualquier tipo de mime, correcto o incorrecto.

A menos que el software de su servidor no almacene explícitamente el tipo mime que el cliente proporcionó, esa información desaparecerá en el momento en que se procese la solicitud HTTP. Entonces, cuando se descarga el archivo, su servidor puede darle un tipo mime diferente (Apache, por ejemplo, deriva uno de la extensión del archivo).

Entonces, ¿qué significa esto para ti?

Durante la carga, la lista blanca de tipos mime no es tan importante como la lista blanca de extensiones de archivo. La extensión del archivo se conservará en el servidor y puede afectar la forma en que se trata el archivo (por ejemplo, los archivos PHP pueden ejecutarse). Sin embargo, todavía lo haría, como una capa adicional de seguridad, aunque el tipo mime se puede falsificar fácilmente.

Durante la descarga, debe asegurarse de que su servidor solo coloque tipos de mimos en la lista blanca "seguros" en el encabezado Content-Type . Por ejemplo, no quieres servir nada como application/javascript ya que eso se abriría para XSS. Pero de nuevo, las extensiones de archivo son igual de importantes. P.ej. no sirva nada con una extensión exe, incluso si no permite el tipo application/vnd.microsoft.portable-executable mime (a menos que desee que la gente pueda subir y descargar ejecutables, por supuesto).

La carga de archivos es complicada, y aquí he tratado de centrarme en los problemas relacionados con el tipo mime. Por favor, no lea esto como una guía completa, hay muchas más cosas a considerar, dependiendo de su contexto.

    
respondido por el Anders 28.12.2017 - 10:16
fuente
0

El usuario puede modificar fácilmente el tipo y la extensión de Mime sin cambiar el archivo subyacente. La extensión permanece cuando llega a la PC de los usuarios, de modo que comprobar esto tiene algún mérito ya que determina qué aplicación la abre en el extremo remoto (en Windows de todos modos).

La comprobación de mimetype ofrece pocos beneficios. Si quieres ir más lejos, mira en números mágicos en los tipos de archivo comunes.

    
respondido por el Hector 14.11.2017 - 12:42
fuente

Lea otras preguntas en las etiquetas