Compartir a través de


Proteger la exploración del sitio de ASP.NET

Actualización: noviembre 2007

La exploración del sitio de ASP.NET proporciona la funcionalidad necesaria para mantener un almacén central de vínculos a todas las páginas de un sitio Web. Dichos vínculos se pueden representar como listas o como menús de exploración en cada página si se incluye un control de servidor Web concreto.

La exploración del sitio de ASP.NET suele utilizarse con controles de exploración, como SiteMapPath, SiteMapDataSource, TreeView y Menu; o bien, se utiliza mediante programación con las clases SiteMap y SiteMapProvider. En este tema se explica cómo mejorar la seguridad de las funciones de exploración.

Aunque seguir los procedimientos recomendados de configuración y programación puede ayudarle a mejorar la seguridad de las aplicaciones, también es importante mantener siempre actualizado el servidor de aplicaciones con las actualizaciones de seguridad más recientes de Microsoft Windows y Servicios de Internet Information Server (IIS), y cualquier actualización de seguridad de Microsoft SQL Server u otros orígenes de datos de la suscripción. Para obtener más información, visite el sitio Web de Windows Update.

Para obtener más información sobre los procedimientos recomendados para escribir código seguro y garantizar la seguridad de las aplicaciones, consulte el libro "Writing Secure Code", de Michael Howard y David LeBlanc, y lea la especificación proporcionada en el sitio Web Microsoft Patterns and Practices. Vea también Procedimientos de seguridad básicos para aplicaciones Web.

En este tema

Configurar la exploración segura

Proteger los datos del mapa del sitio

Ocultar los vínculos de exploración a usuarios concretos

La API de exploración del sitio

Proteger las implementaciones del proveedor de mapa del sitio personalizado

Eventos y mensajes de error

Detectores de virus

Configurar la exploración segura

Las funciones de exploración del sitio de ASP.NET están habilitadas de forma predeterminada. Pueden deshabilitarse estableciendo el atributo enabled del elemento siteMap en false en el archivo de configuración (Web.config). En la sección siguiente se describe la protección de los datos relacionados con la exploración en el archivo Web.config. Para obtener información sobre la configuración de la exploración y sus valores predeterminados, vea Elemento siteMap (Esquema de configuración de ASP.NET).

Proteger los valores de configuración

Si utiliza el proveedor de mapa del sitio de ASP.NET predeterminado no necesita proteger los valores de configuración de la exploración incluidos en el archivo Web.config. No obstante, si implementa un proveedor personalizado que utiliza una base de datos y almacena la cadena de conexión a la base de datos en un archivo de configuración, deberá seguir las recomendaciones indicadas en Proteger el acceso a datos para cifrar dicha cadena.

En un entorno alojado en host, el archivo de configuración debe denegar los derechos de reemplazo del elemento siteMap para evitar que alguien reconfigure el sitio con el fin de utilizar otro mapa o proveedor de mapa. Para obtener más información, vea Bloquear opciones de configuración. Vea también Seguridad de aplicaciones ASP.NET en entornos alojados en host.

Asignar la dirección URL

En un archivo de configuración, las direcciones URL se pueden asignar a una dirección URL descriptiva mediante el elemento urlMappings del archivo Web.config. ASP.NET sólo permite emplear la sintaxis relativa a la aplicación, por ejemplo ~/filename.aspx. Es decir, ASP.NET no permite a las direcciones URL asignadas señalar a una página que se encuentra fuera de la aplicación. Esto ayuda a protegerse contra los intentos por parte de un cliente ISP de ver una página situada fuera de la aplicación en un entorno alojado en host.

Proteger los datos del mapa del sitio

De forma predeterminada, ASP.NET está configurado para impedir que los clientes puedan descargar archivos con extensiones de nombre de archivo conocidas, como .sitemap. Como ayuda para proteger los datos, sitúe los archivos de datos del mapa del sitio personalizados que tengan una extensión de nombre de archivo distinta de .sitemap en la carpeta App_Data y aplique las listas de control de acceso (ACL) adecuadas. Por ejemplo, en Windows 2000 o Windows XP, conceda acceso de sólo lectura a la cuenta de proceso de ASP.NET. En Windows 2003, conceda acceso de sólo lectura a Network Service (servicio de red). Para obtener más información, vea Listas de control de acceso (ACL) necesarias para ASP.NET.

La exploración del sitio de ASP.NET sólo cargará el archivo del mapa del sitio si éste se encuentra en la estructura de directorios de la aplicación. Esto permite evitar que otra aplicación cargue los datos del mapa del sitio de las aplicaciones de un entorno alojado en host.

La exploración del sitio de ASP.NET no permite el acceso a los archivos que se encuentran fuera de la estructura de directorios de la aplicación. Si un mapa del sitio contiene un nodo que hace referencia a otro archivo del mapa del sitio y éste se encuentra fuera de la aplicación, se producirá una excepción. La excepción contiene la ruta de acceso especificada en la clase SiteMapNode e indica que está fuera del ámbito de la aplicación, pero no indica si la ruta de acceso es válida o no. Esto ayuda a evitar que alguien utilice la exploración del sitio de ASP.NET para descubrir las rutas de acceso de los archivos válidas en un servidor.

Para obtener información sobre cómo proteger los datos del mapa del sitio si implementa un proveedor de mapa del sitio personalizado que utiliza una base de datos, vea Proteger el acceso a datos.

Proceso de carga del mapa del sitio

Al iniciar la aplicación, el proveedor de mapa del sitio de ASP.NET predeterminado carga los datos del mapa del sitio como documento XML y los almacena en memoria caché como datos estáticos. Un archivo de mapa del sitio excesivamente grande puede consumir una gran cantidad de memoria y recursos de la CPU durante la carga. En un entorno alojado en host, conviene restringir el tamaño de los mapas del sitio que los clientes pueden crear para sus sitios. Esto ayuda a protegerse frente a los ataques de denegación de servicio.

Las funciones de exploración del sitio de ASP.NET dependen de las notificaciones de archivo para mantener actualizados los datos de la exploración. Cuando se modifica un archivo de mapa del sitio, ASP.NET vuelve a cargar los datos del mapa del sitio. Esto puede suponer un problema si la estructura de exploración del sitio se compone de mapas del sitio secundarios que conceden acceso de escritura a los usuarios, que podrían no entender que cada cambio que realicen provocará una recarga. Asegúrese de establecer un acceso restrictivo en todos los archivos de mapa del sitio. Defina los grupos de usuarios en función de quién tenga permiso para actualizar archivos de según qué ubicaciones y, a continuación, asigne los permisos de los archivos de mapa del sitio a grupos de usuarios individuales.

Ocultar los vínculos de exploración a usuarios concretos

La exploración del sitio de ASP.NET permite proteger los nodos de mapa del sitio individuales mediante una función. Si desea ocultar una parte de la estructura de exploración del sitio a determinados usuarios, puede habilitar el recorte de seguridad de ASP.NET. Una vez habilitado, ASP.NET comprueba la autorización de URL y, opcionalmente, comprueba los permisos de acceso al archivo que se muestra en el nodo de mapa del sitio. ASP.NET sólo muestra el vínculo a dicho archivo si el usuario tiene permiso de acceso. Si desea que todos los usuarios vean el vínculo a un archivo restringido, establezca el atributo roles de los nodos de mapa del sitio correspondientes en un asterisco (*), o carácter comodín, lo que permitirá que todos los clientes vean el vínculo. Para obtener más información, vea Reducción de seguridad del mapa del sitio de ASP.NET.

Incluir direcciones URL externas en un mapa del sitio

En un mapa del sitio, es posible hacer referencia a direcciones URL que son ajenas a la aplicación ASP.NET. Sin embargo, ASP.NET no puede comprobar el acceso a las direcciones ubicadas fuera de la aplicación. Por ejemplo, si crea un nodo de mapa del sitio que corresponde a la dirección https://www.microsoft.com/spanish y habilita el recorte de seguridad, los clientes no podrán ver el hipervínculo, dado que ASP.NET no puede comprobar los permisos de acceso de las direcciones URL externas. Si habilita el recorte de seguridad y utiliza nodos de mapa del sitio que corresponden a direcciones URL externas, establezca el atributo roles de dichos nodos en un asterisco (*), lo que permitirá a todos los clientes ver el vínculo aunque ASP.NET no pueda autorizar el acceso al vínculo externo.

La API de exploración del sitio

Las clases de exploración del sitio están disponibles públicamente para el código que se está ejecutando en el equipo. Dichas clases se ejecutan bajo un nivel de confianza mínimo. Sin embargo, para cargar los datos del mapa del sitio se requiere un nivel de confianza bajo, ya que ASP.NET necesita realizar operaciones de E/S de archivo cuando se abre un archivo de mapa del sitio utilizando el proveedor predeterminado, XmlSiteMapProvider. Opcionalmente, se puede desarrollar un proveedor personalizado que no tenga esta restricción.

Para obtener más información, vea Niveles de confianza y archivos de directivas de ASP.NET e Implementar proveedores de mapas de sitio de ASP.NET.

Proteger las implementaciones del proveedor de mapa del sitio personalizado

Cuando implemente un proveedor de mapa del sitio personalizado, asegúrese de que el proveedor se ha revisado siguiendo los procedimientos de seguridad recomendados. Esto es especialmente importante en los escenarios de alojamiento donde, si el proveedor personalizado no se ha implementado correctamente, podría perder información o contener valores de configuración predeterminados que no están protegidos. Siga los procedimientos recomendados para evitar ataques, como los ataques de inserción de SQL. Por ejemplo, debe comprobar siempre las entradas de los parámetros.

Para obtener información sobre la protección de las bases de datos, vea Proteger el acceso a datos. Vea también Seguridad de aplicaciones ASP.NET en entornos alojados en host.

Eventos y mensajes de error

En las secciones siguientes se explica cómo mitigar los riesgos de seguridad potenciales expuestos por los eventos y mensajes de error inesperados.

Mensajes de excepción

Las excepciones producidas por las funciones de exploración del sitio de ASP.NET no exponen información privilegiada. Revise y pruebe las clases personalizadas de la aplicación Web para detectar las entradas y solicitudes no válidas y garantizar que no se exponga información privilegiada cuando se produzcan excepciones.

Mensajes de error

Para a evitar la exposición de información confidencial a orígenes no deseados, active los errores personalizados para la aplicación o muestre mensajes de error detallados sólo 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 equipo está ejecutando Windows Server 2003, la protección del registro de eventos puede contribuir a mejorar la seguridad de la aplicación. Además, se deben establecer los parámetros del registro de eventos relacionados con el tamaño, la retención, etc. para evitar los ataques de denegación de servicio indirectos contra el registro. De forma predeterminada, sólo los miembros del grupo de seguridad de administradores pueden ver los registros de eventos. 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.

Detectores de virus

Las herramientas como los detectores de virus no deben configurarse para modificar los archivos de mapa del sitio. Esto provoca una recarga innecesaria de los datos de exploración, dado que las funciones de exploración del sitio de ASP.NET dependen de las notificaciones de archivo para mantener actualizados los datos de exploración.

Vea también

Conceptos

Seguridad de controles estándar

Proteger funciones

Proteger el estado de sesión

Proteger el acceso a datos

Proteger la suscripción

Información general sobre las amenazas para la seguridad de las aplicaciones Web

Procedimientos de seguridad básicos para aplicaciones Web

Otros recursos

Proteger el estado de vista

Introducción: consideraciones de seguridad para aplicaciones ASP.NET

Seguridad de aplicaciones ASP.NET en entornos alojados en host