Configuración de Tipos MIME

Los tipos MIME [1] especifican de qué forma programas como los navegadores web o de gestión de e-mail (entre otros) manejarán los archivos de datos que envían o reciben. Cuando un servidor IIS envía información a los clientes, también especifica el tipo MIME de dicha información. Este tipo especifica, entre otras cosas, qué clase de contenido envía y qué aplicaciones cliente podrían ser capaces de procesar o mostrar los datos.

IIS está configurado “de fábrica” para servir una lista de tipos MIME comunes por defecto, aunque podemos crear nuevos tipos MIME o bien eliminar algunos de los que son permitidos en función de las aplicaciones instaladas o de las funciones activadas en IIS. En general los tipos MIME se pueden definir a tres niveles:

  • A nivel de IIS: Existirían para todas las web que estén funcionando bajo ese servidor IIS. En caso de colisiones (un mismo tipo MIME definido en distintos niveles con distinta información asociada), el de este nivel sería el que tiene más prioridad.
  • A nivel de web: Se aplicaría en todas las carpetas contenidas en la web concreta donde se define, es decir, para toda una web concreta del servidor.
  • A nivel de carpeta: Se aplicaría a los ficheros contenidos específicamente en la carpeta donde se defina el tipo MIME. En caso de colisiones (un mismo tipo MIME definido en distintos niveles con distinta información asociada), el de este nivel sería el que tiene menos prioridad.

Una adecuada configuración de los MIME types evitará que IIS sirva ficheros no autorizados. Por ejemplo, será muy raro que nuestra aplicación web necesite servir ficheros de extensión .ini, .bat o .exe. Si eliminamos estos tipos MIME del servidor, entonces será imposible que el servidor devuelva al usuario este tipo de archivos. Esto es por tanto un medio más para evitar que nos “roben” o usen ilícitamente archivos importantes del sistema.

Cuando se intenta servir un fichero cuyo tipo MIME no está registrado (o dicho de otra forma, su extensión no tiene asociada ningún tipo MIME), se devuelve un error 404 (404.3 siguiendo W3C extended log file). Debe tenerse en cuenta que si el tipo MIME está aún en el registro del sistema operativo (lo cual puede saberse si en el registro del sistema hay una clave HKEY_CLASSES_ROOT\ <extensión asociada>), también debe eliminarse de allí. En caso contrario el tipo seguirá sirviéndose, aunque lo borremos de la configuración IIS. Esto plantea dos problemas principalmente:

  1. —Puede entrar en conflicto con otras aplicaciones, ya que el registro está compartido por múltiples aplicaciones del sistema operativo y, al quitar un tipo MIME del registro, podemos hacer que otras aplicaciones dejen de poder procesar ese tipo de archivo.
  2. —Se debe tener cuidado al manipular el registro dada su enorme importancia, aunque esto es una norma de precaución general (siempre hay que ser muy cuidadoso al manipular el registro).


NOTA: Si la máquina es un servidor web dedicado, que tenga un conjunto de aplicaciones instaladas conocido y controlado, es más fácil controlar los posibles errores causados por la eliminación de tipos MIME. En cualquier caso, si alguna aplicación plantea conflictos con la eliminación de un tipo MIME y por ello no podemos quitarlo, sólo nos queda la opción proteger el servidor por otros medios alternativos (que veremos más adelante).

Por otro lado, se puede configurar IIS para que sirva cualquier clase de fichero añadiendo el tipo MIME ‘*’. Por motivos de seguridad obvios (libertad para servir cualquier clase de archivo) esto NO SE RECOMIENDA.

Una vez dada esta explicación, podemos pasar a ver cómo gestionar los tipos MIME del servidor IIS en esta actividad práctica. El siguiente enlace: http://technet.microsoft.com/en-us/library/cc753281%28WS.10%29.aspx explica como hacer lo mismo en IIS 7.


[1] Más información en: http://mgrand.home.mindspring.com/mime.html o http://www.w3schools.com/media/media_mimeref.ASP

Last modified: Thursday, 19 August 2010, 11:27 AM