| Artículos | 01 ENE 2010

Características de seguridad de ASP.NET 3.5

Tags: Histórico
Novedades en la seguridad de aplicaciones ASP.NET
Gonzalo Alvarez.
En los venerables tiempos de la programación de aplicaciones en ASP, el desarrollador tenía que escribir código para hacerlo todo: autenticar a los usuarios, gestionar la autorización, mantener el estado de sesión, administrar altas, bajas, modificaciones de usuarios... ASP.NET 1.x supuso una revolución, proporcionando ayuda en la autenticación y gestión de sesión. A pesar de todo, el desarrollador tenía aún prácticamente todo por hacer. No fue hasta la llegada de ASP.NET 2.0 y las mejoras de ASP.NET 3.5 que se liberó casi por completo al desarrollador de las tareas de gestión de usuarios y credenciales, y se le proporcionaron por fin herramientas para un acceso seguro a datos.

La introducción del .NET Framework con sus lenguajes que compilaban a código intermedio y en concreto la introducción de ASP.NET 1.x supusieron una revolución de seguridad en la creación de aplicaciones web en entornos Microsoft. Todo era nuevo y maravilloso para los desarrolladores que provenían de las aplicaciones ASP programadas en VBScript. Los administradores de sitios web vieron cómo el archivo Web.Config facilitaba el mantenimiento y despliegue de aplicaciones, así como la configuración de seguridad. Los desarrolladores se encontraron con una serie de clases que les permitían gestionar la autenticación y la autorización de usuarios de una manera infinitamente más segura y sencilla que en ASP. Mejoró la suplantación de usuarios desde la propia aplicación web. Aparecieron nuevas clases de criptografía que volvían innecesaria la pesadilla de programar directamente la CryptoAPI. Se introdujo el concepto de seguridad en el acceso a código (Code Access Security, CAS), basada en la identidad de código, en oposición a la identidad de usuario. Estas novedades de ASP.NET, aunque implantadas ya en aplicaciones para Internet desarrolladas en Java, supusieron todo un cambio de paradigma para los desarrolladores en entornos Microsoft.
Sin embargo, a pesar del avance gigantesco que representaron hacia la creación y despliegue de aplicaciones más seguras, mucho trabajo le quedaba aún por hacer a los diseñadores y desarrolladores web. Todavía tenían estos que diseñar las páginas para recabar las credenciales y escribir su propio código para autenticar a los usuarios y hacer un seguimiento de su estado de sesión, así como para gestionar el cambio, recuperación e inicialización de las contraseñas y el alta y baja de usuarios. Aún había que introducir código de acceso a datos y ejecución de sentencias SQL al usar todos los controles de datos como el hoy extinto DataGrid. Había que continuar escribiendo todo el código de gestión del estado de sesión para asignar datos a los usuarios, como por ejemplo un carrito de la compra. El soporte criptográfico aún dejaba que desear.
La publicación de ASP.NET 2.0 supuso un nuevo avance de gigante en seguridad, muchas de cuyas características han sido perfeccionadas con la última versión 3.5. En este artículo se repasan brevemente cuáles han sido estas mejoras y cómo Microsoft ha facilitado las herramientas para creación de aplicaciones más seguras, con menos código y menos propensas a errores.

Mejoras en la suscripción
En ASP.NET 1.x el desarrollador debía escribir todo el código para administrar la creación, almacenamiento y recuperación de los usuarios autenticados y sus funciones (roles), ya que el Framework sólo proporcionaba la clase FormsAuthentication para identificar a los usuarios y asignarles un testigo de sesión. Desde la versión 2.0 en adelante puede delegarse en la Suscripción (Membership) para gestionar todos esos detalles sin escribir código y, por consiguiente, de forma menos propensa a errores de seguridad. La Suscripción ASP.NET proporciona toda la funcionalidad necesaria para crear nuevos usuarios y contraseñas; almacenar la información de la suscripción (nombres de usuario, contraseñas y datos complementarios) en SQL Server, Active Directory o un almacén de datos alternativo definido por el desarrollador; autenticar a los usuarios que visitan el sitio mediante los controles de inicio de sesión de ASP.NET descritos más adelante; administrar las contraseñas (crearlas, modificarlas y restablecerlas); especificar un proveedor de suscripciones personalizado que permita utilizar el código propio para administrar la suscripción y mantener los datos de la suscripción en un almacén de datos personalizado. Por defecto, ASP.NET proporciona dos proveedores de suscripción: SqlMembershipProvider, para almacenar los datos de los usuarios en una base de datos SQL Server; y ActiveDirectoryMembershipProvider, para administrar los usuarios de la aplicación web desde el Directorio Activo.
Una novedad muy interesante de la gestión de usuarios mediante suscripciones es que se pueden instaurar directivas de contraseñas que controlen el número mínimo de caracteres, empleo de caracteres no alfanuméricos y complejidad de contraseñas, así como bloqueo de usuarios tras superar un umbral de intentos fallidos de inicio de sesión.
Un aspecto importante del sistema de suscripciones es que el programador nunca necesita realizar explícitamente ninguna función de bajo nivel en la base de datos para obtener o establecer la información sobre el usuario. El sistema de suscripciones se configura manualmente en el archivo Web.Config de la aplicación o a través de la herramienta Administración de sitios Web, la cual proporciona una interfaz gráfica.

Mejoras en la autenticación
La autenticación comprende el proceso de identificar a los visitantes. ASP.NET soporta tres tipos de autenticación: basada en las cuentas de usuario Windows del sistema operativo, en cuyo caso se delega en IIS la responsabilidad de identificar a los usuarios; basada en .NET Passport, utilizando cuentas de Hotmail para identificar a los usuarios; y basada en formularios, con diferencia la más extendida en Internet.
En ASP.NET 2.0 se introdujeron los controles de inicio de sesión, los cuales permiten construir fácilmente un completo sistema de registro de usuarios basado en formularios. Incluyen controles para el alta de usuarios, para iniciar sesión, para cambiar contraseñas y para recuperar contraseñas olvidadas. Todo ello sin necesidad de escribir ni una línea de código, ya que basta con arrastrar dichos controles a la página web. Estos controles de inicio de sesión utilizan los servicios de la Suscripción ASP.NET para autenticar usuarios, crear nuevos usuarios y cambiar sus propiedades.
Los controles de inicio de sesión incluyen el control Login, que muestra una interfaz de usuario completamente configurable para la autenticación de usuario y sin necesidad de escribir el código para realizar la autenticación si se utiliza la Suscripción ASP.NET; el control LoginView, que permite mostrar información diferente en función de si los usuarios son anónimos o si han iniciado una sesión; el control LoginStatus, que muestra un vínculo de inicio de sesión para los usuarios que no están autenticados y un vínculo de cierre de sesión para los que sí lo están; el control LoginName, que muestra el nombre de inicio de sesión de un usuario siempre y cuando el usuario haya iniciado la sesión mediante la Suscripción ASP.NET; el control PasswordRecovery, que permite a l

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información