Tipo MIME frente a números mágicos

1

Me interesa una comparación de los dos con respecto a lo que es más seguro cuando subo archivos a un sitio web (para el que soy programador).

La página de Mozilla sobre tipos MIME indica que "en la Web, solo el tipo MIME es relevante y debe establecerse con cuidado ", lo que implica (para mí) que usar Números mágicos no es posible o que es más fácil de falsificar.

    
pregunta nsaigal 23.08.2017 - 00:10
fuente

3 respuestas

2

Si está hablando de cargas de archivos a un servidor, use varios métodos para verificar el tipo de archivo. La sobrecarga es pequeña. Los números mágicos le brindan una forma más robusta de verificar el tipo de archivo, pero aún así pueden ser falsificados.

Nunca confíe en la extensión de archivo, esta es la parte más trivial de falsificar.

Si fuera yo, independientemente del riesgo para el sistema, siempre lo haría:

  1. verifique la extensión del archivo (la extensión final y cualquier cosa después de una.) después de limpiar todo el nombre
  2. verificar el tamaño del archivo (dentro del rango definido)
  3. Verificar el tipo mime
  4. comprueba los números mágicos

Todas las comprobaciones anteriores utilizan una lista blanca para la verificación.

También me aseguraría de que el archivo cargado se mueva a un directorio seguro (sin permisos de ejecución) y se le asigne un nombre de archivo aleatorio.

    
respondido por el Trickycm 22.09.2017 - 16:27
fuente
0

Sí, los tipos Mime son el método recomendado. Como eso es lo que hacen todos los Agentes de usuario (navegadores, etc.), puede depender de él para el comportamiento predeterminado.

Por "bits mágicos" si te refieres a analizar las estructuras del encabezado del archivo: sí, puedes hacerlo como un paso adicional si tu riesgo es alto, es decir, tu modelo de amenaza implica un paso en el que los atacantes cargan un archivo malicioso y eso lleva a alguna debilidad Claramente, implica un trabajo adicional de su parte (que consume ciclos de CPU, lo que aumenta el costo) que debe hacer solo cuando el beneficio "vale la pena".

También existe la posibilidad de usar extensiones de nombre de archivo (por ejemplo, .pdf para el formato PDF, .jpg / .jpeg para el formato JPEG, etc.) para detectar tipos de archivos (se usan con bastante frecuencia), pero nuevamente, esto es ligeramente menos confiable (mi opinión, no es un hecho comprobado) que usar tipos mime.

    
respondido por el Sas3 23.08.2017 - 04:31
fuente
0

MIME es relevante para los agentes de usuario (navegadores) cuando descargan archivos. Los números mágicos son relevantes para el servidor cuando un usuario carga un archivo. No puedes compararlos ya que tienen diferentes usos. Puedes usar el número mágico (y las extensiones de archivo) para establecer el tipo mime.

La seguridad no tiene nada que ver con eso. Además, tanto la extensión de archivo como el número mágico se pueden falsificar (es más difícil falsificar un número mágico). Para las imágenes, puede volver a codificarlas (del lado del servidor) para eliminar cualquier vulnerabilidad potencial que pueda estar incrustada en ellas. Para otros archivos, no hay buenas soluciones en mi conocimiento. No debes confiar en ellos.

    
respondido por el A. Hersean 23.08.2017 - 15:57
fuente

Lea otras preguntas en las etiquetas