Share via


Proteger la suscripción

Actualización: noviembre 2007

Las suscripciones ASP.NET proporcionan funciones para administrar y autenticar los usuarios; la mayoría de las veces se utiliza con la autenticación de formularios y los controles de autenticación, como Login, LoginView, LoginStatus, LoginName, PasswordRecovery y CreateUserWizard. En este tema se describe cómo se puede optimizar la seguridad de la característica de suscripción a través de los procedimientos recomendados al configurar un sitio Web y al codificarlo con las clases de suscripción.

Aunque con estos procedimientos recomendados podrá mejorar la seguridad de su aplicación, es importante también que mantenga continuamente actualizado el servidor de la aplicación con las últimas revisiones de seguridad de Microsoft Windows e Internet Information Services (IIS), así como cualquier revisión de Microsoft SQL Server o de otros orígenes de datos de suscripciones.

Para obtener más 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 Modelos y Prácticas de Microsoft (https://www.microsoft.com/resources/practices/default.mspx).

Configuración de suscripción segura

La característica de suscripción está habilitada de forma predeterminada en las aplicaciones ASP.NET y no se puede deshabilitar. Las opciones de configuración predeterminadas se establecen en los valores más seguros. Para obtener información sobre las opciones de configuración de suscripción y sus valores predeterminados, vea Elemento membership (Esquema de configuración de ASP.NET). Debe establecer el atributo requiresQuestionAndAnswer en true, sobre todo cuando enablePasswordReset o enablePasswordRetrieval sean también true.

Proteger los valores de configuración

Cuando almacene información confidencial en un archivo de configuración de una aplicación, debe cifrar los valores confidenciales mediante Configuración protegida. La información que es especialmente delicada comprende las claves de cifrado almacenadas en el elemento de configuración machineKey y las cadenas de conexión vinculadas a un origen de datos almacenado 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.

Aplicar algoritmo hash y claves de cifrado seguras

Se recomienda encarecidamente cifrar las contraseñas del usuario en el origen de datos de la suscripción mediante un atributo passwordFormat definido como Hashed o Encrypted, siendo Hashed la opción más segura. Los valores de las claves de cifrado del algoritmo de cifrado especificado se almacenan en el elemento de configuración machineKey. Para establecer un cifrado de alta seguridad, especifique una clave de cifrado que sea un valor generado aleatoriamente con la longitud adecuada para el algoritmo de cifrado seleccionado.

En los servidores que hospedan varias aplicaciones, se recomienda definir claves de cifrado exclusivas para cada aplicación. Una alternativa menos segura es definir una clave de cifrado única y especificar la opción IsolateApps con la clave.

Puede establecer la configuración del equipo en un servidor host para impedir que las aplicaciones sobrescriban las opciones de configuración, lo que impedirá también que las claves de cifrado puedan definirse de nuevo en el archivo Web.config de una aplicación.

Proteger las conexiones de un origen de datos de suscripciones

Cadenas de conexión

Para mantener la seguridad en la conexión con el servidor de la base de datos, debe cifrar la información de la cadena de conexión en la configuración mediante Configuración protegida. Para obtener más información, vea Cifrar información de configuración mediante una configuración protegida.

Conectar a SQL Server utilizando Seguridad integrada

Debe establecer la conexión con los equipos que ejecuten SQL Server mediante Seguridad integrada para evitar la posibilidad de que la cadena de conexión se vea comprometida y se ponga en peligro su id. de usuario y su contraseña. Cuando especifica una conexión que utiliza Seguridad Integrada para conectarse a un equipo que ejecuta SQL Server, la característica de suscripción vuelve a establecerse en la identidad del proceso. Debe garantizar que la identidad del proceso que ejecuta 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 para almacenar la información del usuario de la suscripción incluye funciones y vistas de base de datos que permiten restringir el acceso de los usuario únicamente a las funciones y las vistas necesarias. Debe asignar los privilegios mínimos necesarios a un id. de usuario que se conecte a la base de datos de suscripción 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.

Identidad del proceso de trabajo de SQL Server Express

SQL Server Express 2005 incluye un nuevo modo de operación en el que puede iniciar un proceso de trabajo que se ejecute como la identidad del usuario que se conecta. Esta función se conoce como el modo "ejecutar como usuario". Aunque este modo de operación es conveniente para el desarrollo de escritorio cuando se utiliza IIS, no resulta apropiado iniciar los procesos de trabajo en servidores Web que hospeden varios códigos base de cliente que no sean de confianza. En los servidores host compartidos que contienen aplicaciones que no confían entre sí, debe deshabilitarse la función "ejecutar como usuario". Esta función se puede desactivar conectándose a la instancia de SQL Express (por ejemplo osql –E –S .\sqlexpress) y emitiendo el comando de Transact-SQL siguiente.

EXEC sp_configure 'show advanced option', '1'

GO

RECONFIGURE WITH OVERRIDE

GO

EXEC sp_configure 'user instances enabled', 0

GO

RECONFIGURE WITH OVERRIDE

GO

Páginas Web seguras que utilizan suscripción

Las páginas de la aplicación que trabajan con datos confidenciales, como las páginas de inicio de sesión, deben protegerse utilizando los mecanismos de seguridad Web estándar. Estos mecanismos incluyen medidas, como por ejemplo utilizar Secure Sockets Layer (SSL) y requerir que los usuarios inicien sesión para realizar operaciones delicadas, como actualizar la información de un usuario o eliminar usuarios.

Además, las páginas no deben exponer datos confidenciales, como las contraseñas y, en algunos casos, los nombres de usuario, en texto no cifrado. Compruebe que las páginas que muestran esta información utilizan SSL y sólo están disponibles a los usuarios autenticados. Debe evitar también que los datos confidenciales se almacenen en cookies o se envíen a través de conexiones que no sean seguras.

Protección contra los ataques de denegación de servicio

Los métodos que realizan actualizaciones o grandes operaciones de búsqueda pueden reducir la capacidad de respuesta de su origen de datos de suscripción si varios clientes llaman simultáneamente a estos métodos. Para reducir la exposición a los ataques de denegación de servicio, restrinja el acceso a las páginas ASP.NET que utilicen métodos que realicen búsquedas o actualizaciones de la base a los usuarios administrativos y exponga sólo las páginas ASP.NET que proporcionen opciones de validación y administración de contraseñas de uso general.

Mensajes de error y eventos

Excepciones

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

Registro de eventos

Si su servidor está ejecutando Windows Server 2003, puede mejorar la seguridad de su aplicación protegiendo el registro de eventos y estableciendo los parámetros relativos al tamaño, la retención, etc. del registro de eventos con el fin de evitar un ataque de denegación de servicio indirecto.

Supervisión de estado

Los intentos de inicio de sesión que se realizan correctamente o en los que se producen errores se registran en la característica de supervisión de estado de ASP.NET. En la configuración predeterminada, esto significa que los intentos de inicio de sesión en los que se producen errores incluirán el nombre de usuario y otra información de diagnóstico en el registro de eventos de la aplicación. Compruebe que el acceso al registro de eventos esta restringido para salvaguardar esta información.

Proveedores de suscripciones personalizados

Al crear un proveedor de suscripciones personalizado, compruebe que sigue los procedimientos de seguridad recomendados para evitar ataques, como ataques de inserción de SQL, al trabajar con una base de datos. Cuando utilice un proveedor de suscripciones personalizado, compruebe que el proveedor se ha revisado siguiendo los procedimientos recomendados de seguridad.

Trabajar con caracteres específicos de una referencia cultural

Al utilizar el proveedor de suscripciones de SQL Server o un proveedor de suscripciones personalizado, existe la posibilidad de configurar el origen de datos para almacenar los datos de suscripción en un formato que tenga en cuenta la referencia cultural. Sin embargo, ASP.NET evalúa los nombres de usuario del elemento de configuración authorization y los nombres de usuario del almacén de datos de suscripción como invariables en cuanto a la referencia cultural. Como resultado, es posible que se le conceda autorización a un usuario que no la tiene porque, cuando el nombre de usuario se trata como invariable en cuanto a la referencia cultural, puede coincidir con el nombre de un usuario autorizado.

Para evitar que los usuarios obtengan acceso sin autorización, asegúrese de que los nombres de usuario son únicos cuando se evalúen como invariables en cuanto a la referencia cultural. Alternativamente, puede especificar sólo nombres de función para la autorización mediante el elemento de configuración authorization y, después, asegurarse de que los nombres de función son únicos cuando se evalúan como invariables en cuanto a la referencia cultural. A menudo se prefiere especificar la autorización mediante nombres de función, porque la creación y administración de funciones se puede restringir como función administrativa.

Vea también

Otros recursos

Administrar usuarios mediante suscripciones