Proteger archivos de definición de explorador

Actualización: noviembre 2007

Los archivos de definición de explorador (archivos .browser) contienen información relativa a las funciones de las clases de exploradores (como Internet Explorer) y de exploradores concretos (como Internet Explorer 6.0). En tiempo de ejecución, ASP.NET utiliza la información de los archivos .browser para determinar qué explorador ha realizado la solicitud, qué funciones tiene y cómo se representa el marcado en ese explorador. Para obtener más información, vea Esquema de archivos de definición de explorador (Elemento browsers).

Para obtener información detallada sobre los procedimientos recomendados para escribir código seguro y proteger las aplicaciones, vea el libro "Writing Secure Code" de Michael Howard y David LeBlanc y las instrucciones proporcionadas en Microsoft Patterns and Practices.

Nota:

Los archivos de definición de explorador son nuevos en la versión 2.0 de .NET Framework. En versiones anteriores de .NET Framework, se utilizaba el elemento browserCaps para definir las definiciones de explorador en los archivos de configuración.

Seguridad del archivo de definición de explorador

Todas las características de un explorador, incluidas las clases de .NET Framework y los archivos de definición de explorador, requieren confianza parcial en el nivel de la aplicación y plena confianza en el nivel global. El ensamblado de definición de explorador global se firma con una clave de equipo única antes de su inserción en la caché del ensamblado global y no se puede manipular. Los archivos de definición de explorador incluidos en el directorio %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers están protegidos mediante listas de control de acceso (ACL) y se requieren privilegios administrativos para modificarlos.

Directorios de archivos de definición de explorador

El directorio global Browser y el subdirectorio App_Browsers de la aplicación deben contener únicamente archivos con la extensión de nombre de archivo .browser. La característica de funciones de explorador de ASP.NET sólo compila archivos .browser. Además, ASP.NET impide que el servidor Web suministre los archivos de estos directorios y que el código de otras aplicaciones tenga acceso a ellos.

Listas de control de acceso (ACL) de los archivos de definición de explorador

La tabla siguiente muestra las listas de control de acceso definidas de forma predeterminada en los archivos .browser incluidos en el directorio %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. Estas ACL también se establecen en el propio directorio, pero incluyen permisos de modificación para el grupo CREATOR OWNER. El directorio es de sólo lectura.

Cuenta de Windows

Permisos

Administradores

Control completo

Cuenta de equipo de ASP.NET (<server>\ASPNET)

Lectura y ejecución

CREATOR OWNER

Control completo

IIS_WPG (<server>\IIS_WPG)

Lectura y ejecución

LOCAL SERVICE

Lectura y ejecución

NETWORK SERVICE

Lectura y ejecución

Usuarios avanzados (<server>\Power Users)

Modificación

SYSTEM

Control completo

Usuarios (<server>\Users)

Lectura y ejecución

La tabla siguiente muestra las ACL que se deben establecer en los archivos .browser de la aplicación incluidos en el subdirectorio App_Browsers.

Cuenta de Windows

Permisos

Administradores

Control completo

IIS_WPG (<server>\IIS_WPG)

Lectura y ejecución

INTERACTIVE

Lectura

Cuenta de invitado de Internet (<server>\IUSR_<server>)

Lectura

NETWORK

Lectura

NETWORK SERVICE

Lectura

SYSTEM

Control completo

Usuarios (<server>\Users)

Lectura y ejecución

Cuenta de Herramienta Administración de sitios Web en ASP.NET

Especial

Agregar archivos de definición de explorador

No descargue ni instale archivos de definición de explorador a menos que confíe en su origen. Por ejemplo, examine un nuevo archivo de definición de explorador para ver si se hace referencia a algún espacio de nombres desconocido en cualquiera de los atributos siguientes:

  • Atributo markupTextWriterType del elemento controlAdapters.

  • Atributo value del elemento capability.

  • Atributos controlType y adapterType del elemento adapter.

Para obtener información sobre los elementos y atributos válidos, vea Esquema de archivos de definición de explorador (Elemento browsers).

Modificar archivos de definición de explorador

Si se agregan nuevos archivos de definición de explorador al directorio global o se realizan cambios en los archivos de definición de explorador globales, esos cambios no tienen efecto hasta que se vuelve a compilar manualmente la colección de funciones del explorador con la herramienta Aspnet_regbrowsers.exe, disponible en la carpeta %SystemRoot%\Microsoft.NET\Framework\version, o se genera una recompilación mediante programación utilizando la clase BrowserCapabilitiesCodeGenerator.

Sin embargo, no es necesario volver a compilar los cambios en las definiciones de explorador de la aplicación. Los cambios realizados en esas definiciones se vuelven a compilar y a aplicar dinámicamente.

Proteger archivos de definición de explorador en un entorno de alojamiento compartido

En un entorno de alojamiento compartido, los usuarios malintencionados pueden modificar la configuración de los archivos de definición de explorador por medio de la modificación directa de estos archivos, de una modificación de las API de configuración y de otras herramientas de administración y configuración. Para mitigar esta amenaza, mantenga ACL seguras en los archivos de definición de explorador. El contenido de los directorios de archivos de definición de explorador se compila y por ello se debe proteger de la misma forma que cualquier otro directorio de código de la aplicación. Si el administrador del host impide que un usuario agregue código a una aplicación, también debe impedir que el usuario agregue archivos de definición de explorador.

Imponer un bloqueo de archivo en un archivo de definición de explorador

Sólo tras repetidos intentos de guardar en un archivo de definición de explorador o de abrir un identificador de archivo se puede bloquear un archivo de definición de explorador. Un usuario malintencionado puede tratar de bloquear los archivos de definición de explorador del directorio %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. Sin embargo, para bloquear un archivo de definición de explorador se requiere plena confianza, que está deshabilitada de forma predeterminada en ASP.NET.

Utilizar la API de configuración para leer archivos arbitrarios

Las clases de la API de configuración de la definición del explorador no pueden leer directorios que no formen parte del dominio de la aplicación, ni archivos que no tengan una extensión de nombre de archivo .browser.

Almacenar en memoria caché las funciones del explorador

En tiempo de ejecución, la información del archivo de definición de explorador se combina en una colección de exploradores conocidos en un objeto BrowserCapabilitiesFactory. Cuando se realiza una solicitud, ASP.NET identifica el explorador que ha efectuado la solicitud por el encabezado de ésta y compila un objeto HttpCapabilitiesBase que corresponde al explorador que ha emitido la solicitud. El objeto se almacena en memoria caché y se puede volver a utilizar en una solicitud diferente realizada por el mismo explorador.

Un cliente malintencionado puede intentar desbordar el servidor Web con una serie de solicitudes en la que cada nueva solicitud usa un encabezado diferente, lo que hace que ASP.NET genere y almacene en caché objetos de funciones de explorador para cada solicitud. Esto puede dar como resultado un ataque de denegación de servicio. Para mitigar esta amenaza, configure el atributo userAgentCacheKeyLength del elemento Elemento browserCaps (Esquema de configuración de ASP.NET) en el archivo Machine.config o en un archivo Web.config. Este elemento define la longitud de caracteres que se debe utilizar como clave para identificar los objetos de funciones almacenados en la memoria caché interna. El ajuste predeterminado es 64. Puede reducir este valor para aumentar la probabilidad de encontrar un explorador coincidente en la caché y disminuir así la carga en la memoria caché.

Excepciones

Para contribuir a evitar que la información confidencial pueda estar expuesta en orígenes no deseados, configure la aplicación de manera que no muestre mensajes de error detallados o que muestre estos mensajes únicamente cuando el cliente sea el propio servidor Web. Para obtener más información, vea Elemento customErrors (Esquema de configuración de ASP.NET).

Registro de eventos

Si el servidor está ejecutando Windows Server 2003, puede mejorar la seguridad de la aplicación protegiendo el registro de eventos y estableciendo los parámetros relativos al tamaño, la retención y a otras características del registro de eventos con el fin de evitar un ataque de denegación de servicio indirecto. Para obtener más información sobre la configuración de los registros de eventos, busque "Visor de sucesos" o "Event Viewer" en Ayuda y soporte técnico de Windows.

Vea también

Tareas

Cómo: Detectar tipos de explorador en páginas Web ASP.NET

Conceptos

Controles de servidor Web ASP.NET y funciones del explorador

Proteger archivos de definición de explorador

Escenarios de configuración de ASP.NET

Información general sobre el filtrado de dispositivos de ASP.NET

Información general sobre la arquitectura del comportamiento adaptable de los controles

Información general sobre el desarrollo Web en ASP.NET Mobile

Proteger la configuración de ASP.NET

Referencia

Esquema de archivos de definición de explorador (Elemento browsers)

Otros recursos

Proteger sitios web ASP.NET