Proteger las propiedades de perfil
Actualización: noviembre 2007
La característica de perfiles de ASP.NET permite almacenar y recuperar configuraciones de usuarios en un origen de datos, por ejemplo una base de datos. Las propiedades y los grupos que constituyen los perfiles de usuario se especifican en el archivo de configuración de la aplicación. En tiempo de ejecución, ASP.NET utiliza la información de configuración para generar dinámicamente una clase con descriptores de acceso con establecimiento inflexible de tipos para cada propiedad de perfil. A continuación, esta clase se expone mediante la propiedad estática Profile. El proveedor de perfiles almacena los valores de las propiedades de perfil en un origen de datos, en formato XML no cifrado o en formato binario serializado.
Si desea mejorar la seguridad de las aplicaciones, puede hacerlo siguiendo los procedimientos recomendados para la codificación y la configuración. También es importante que mantenga el servidor Web de la aplicación continuamente actualizado con las actualizaciones de seguridad más recientes para Microsoft Windows e Internet Information Services (IIS), así como con las actualizaciones para Microsoft SQL Server u otros orígenes de datos de perfiles.
Para obtener más información 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 siga las sugerencias proporcionadas en Microsoft Patterns and Practices (https://www.microsoft.com/resources/practices/default.mspx).
Configuración de perfiles seguros
La característica de perfiles de ASP.NET está habilitada de forma predeterminada. Aunque los valores de configuración predeterminados son los más seguros, se recomienda que deshabilite la característica de perfiles de usuario si la aplicación no la requiere. Para obtener información sobre la configuración de perfiles y sus valores predeterminados, vea Elemento profile (Esquema de configuración de ASP.NET). La identificación anónima, que puede establecerse para las propiedades de perfil, está deshabilitada de forma predeterminada. Para obtener más información sobre la configuración de la identificación anónima y sus valores predeterminados, vea Elemento anonymousIdentification (Esquema de configuración de ASP.NET).
Proteger los valores de configuración
Cuando se almacena información confidencial en un archivo de configuración, se recomienda que cifre los valores confidenciales utilizando una configuración protegida. Entre la información especialmente confidencial se encuentran las claves de cifrado almacenadas en el elemento de configuración machineKey y las cadenas de conexión a un origen de datos almacenadas en el elemento de configuración connectionStrings. Para obtener más información, vea Cifrar información de configuración mediante una configuración protegida.
Proteger las conexiones a un origen de datos de perfiles
Cadenas de conexión
Como se ha mencionado anteriormente, es importante proteger la información confidencial almacenada en una cadena de conexión que se emplea para establecer comunicación con un equipo en el que se ejecuta SQL Server u otro origen de datos. Para mantener protegida la conexión con la base de datos, se recomienda que cifre la información de la cadena en la configuración utilizando una configuración protegida. Para obtener más información, vea Cifrar información de configuración mediante una configuración protegida.
Conectar con SQL Server mediante seguridad integrada
Se recomienda que utilice seguridad integrada para conectarse con los equipos en los que se ejecuta SQL Server, a fin de evitar que se vea comprometida la cadena de conexión y que se expongan los datos de la contraseña y el id. de usuario. Cuando se especifica una conexión que utiliza seguridad integrada para conectarse con un equipo en el que se ejecuta SQL Server, el proveedor de perfiles vuelve a la identidad del proceso. Se recomienda que se asegure de que la identidad del proceso que está ejecutando ASP.NET (por ejemplo, el grupo de aplicaciones) es la cuenta de proceso predeterminada o una cuenta de usuario restringida. Para obtener más información, vea Suplantación de ASP.NET.
Permisos de la base de datos de SQL Server
La base de datos de SQL Server que se utiliza de forma predeterminada para almacenar la información de los perfiles incluye funciones y vistas que permiten restringir el acceso del usuario sólo a los privilegios requeridos para la aplicación. Se recomienda que asigne los privilegios mínimos necesarios al id. de usuario que se conecta con la base de datos de perfiles de SQL Server. Para obtener más información, vea Funciones y vistas en la base de datos de servicios de la aplicación para SQL Server.
Proteger los datos confidenciales del origen de datos de perfiles
El proveedor de perfiles de usuario predeterminado no cifra los valores almacenados en el origen de datos de perfiles. Se recomienda que cifre la información confidencial antes de almacenarla en dicho origen de datos, a fin de evitar que se exponga dicha información si el origen de datos se ve comprometido. Es posible cifrar los datos confidenciales antes de almacenar el valor en la propiedad de perfil o ampliar las clases ProfileBase o ProfileProvider para que proporcionen funciones de cifrado.
Impedir que los datos de perfil anónimos se compartan entre aplicaciones
Si está habilitada la identificación anónima para una aplicación y para las propiedades de perfil empleadas por dicha aplicación, existe el riesgo de que los valores de las propiedades del perfil anónimo se expongan a otra aplicación. Esto puede ocurrir cuando el atributo cookiePath de identificación anónima está establecido en una ruta de acceso que incluye varias aplicaciones y cuando existen varias aplicaciones en un dominio común.
Cuando utilice la identificación anónima con los perfiles de usuario y tenga intención de separar a los usuarios anónimos entre las aplicaciones, se recomienda que especifique claves de cifrado distintas en el elemento machineKey de cada aplicación, que establezca el ámbito de la cookie de identificación anónima en una aplicación específica y que establezca la propiedad ApplicationName en un valor diferente para cada aplicación.
Proteger las páginas Web que utilizan perfiles
Las páginas de la aplicación que funcionan con datos confidenciales almacenados en las propiedades de perfil deben asegurarse mediante mecanismos de seguridad Web estándar. Esto incluye el uso de Secure Sockets Layer (SSL) y la necesidad de que los usuarios inicien una sesión para realizar operaciones confidenciales como actualizar la información del usuario o eliminar usuarios. Además, no se deben almacenar datos confidenciales en las cookies.
Protección contra los ataques de denegación de servicio
Los métodos de la clase ProfileManager que realizan actualizaciones u operaciones de búsqueda de ejecución prolongada pueden reducir la capacidad de respuesta del origen de datos de perfiles si un gran número de clientes llama simultáneamente a los métodos. Para reducir la exposición de la aplicación a los ataques de denegación de servicio, permita sólo a los usuarios administrativos el acceso a las páginas ASP.NET que realizan actualizaciones de la base de datos o búsquedas asociadas con los perfiles.
Eventos y mensajes de error
Excepciones
Para evitar que la información confidencial se vea expuesta, configure la aplicación para que no muestre mensajes de error detallados o que sólo los muestre cuando se esté ejecutando localmente en el servidor Web. Para obtener más información, vea el elemento de configuración customErrors.
Registro de eventos
La característica de perfiles de ASP.NET registra información para ciertas condiciones de error mediante la supervisión de estado de ASP.NET, que de forma predeterminada almacena la información en el registro de eventos. Si en el equipo del servidor se ejecuta Windows Server 2003, puede mejorar la seguridad de la aplicación protegiendo el registro de eventos y estableciendo los parámetros del mismo relacionados con el tamaño, la retención, etc. para evitar los ataques de denegación de servicio indirectos contra el registro.
Información de seguimiento
El servidor Web puede configurarse para que realice un seguimiento del momento en que tienen lugar ciertas acciones relacionadas con la característica de perfiles y para que almacene la información de seguimiento en un archivo de registro. Dado que la información confidencial, como los nombres de usuario, se puede almacenar en el archivo de registro de seguimiento, se recomienda que sólo permita a los administradores habilitar el seguimiento, configurar la ubicación del archivo de registro de seguimiento y tener acceso a dicho archivo.
Proveedores de perfiles personalizados
Al crear un proveedor de perfiles personalizado para el acceso a bases de datos, no se olvide de seguir los procedimientos recomendados en materia de seguridad para evitar ataques como los ataques de inserción de SQL. Cuando utilice un proveedor de perfiles personalizado, asegúrese de que el proveedor se ha creado siguiendo dichos procedimientos.
Vea también
Conceptos
Información general sobre las propiedades de perfil de ASP.NET