Guía 8. SEGURIDAD BASICA EN ASP.NET Sesiones El objeto Session, nos permite crear sesiones de usuarios, que tiene un tiempo de validez antes de expirar, por default su tiempo es de 20 minutos. El mismo tiene varios usos y no sólo el de crear sesiones, su uso es típico en aplicaciones con carritos de compra, en foro para establecer un tiempo mínimo para poder votar o volver a escribir un mensaje. Las sesiones en asp.net son automáticas no hay que crearlas y/o iniciarlas por lo tanto para aplicar seguridad a una pagina solo debemos implementar una autentificación. Autentificación Llamamos autentificación a la comprobación de la identidad de una persona o de un objeto. Lo más común en las aplicaciones web es hacerlo mediante un usuario y una contraseña, previamente registradas en una base de datos. Es importante mencionar que la combinación de una sesión con una rutina de autentificación logra que identifiquemos al usuarios de nuestra aplicación, pero la sesión solo identifica al computador con el servidor, por tal motivo si deseamos que el usuario solo tenga una sesión activa deberíamos de hacer una rutina para tal fin. Podemos usar algunos métodos de Session como por ejemplo: Session.SessionID Session.CookieMode Session.Clear Session.Abandon obtiene el identificador único de la sesión. Obtiene un valor que indica si esta configurada con cookies Quita todos los valores y estados de la sesión. Cancela la sesión actual. Para que prueben las sesiones y su uso, ocupen los script y base de datos de ejemplo. VARIABLES DE SESION Y APLICACIÓN Las variables de sesión solo sirven para controlar datos dentro de la sesión y están activas y disponibles solamente para dicha sesión, no hay necesidad de inicializarlas, para crear una variable de nombre “Login” lo declaramos de la siguiente manera: Session(“Login”) = “valor_a_asignar” Esta variables estar viva solamente mientras dure la sesión. Las variables de aplicación sirven para controlar datos dentro de la aplicación y estarán activos y disponibles durante todo el proceso de laaplicación sin diferenciar inicios o cierres de sesión y están activos y disponibles para todos los usuarios, para crear una variables de aplicación por ejemplo que se llame “Mensaje” la declaramos de la siguiente manera: Application(“Mensaje”) = “Valor_del_mensaje“ Ver los script de ejemplos. Configuraciones personalizadas. GLOBAL.ASAX Global.asax nos provee una manera de responder a los eventos de la aplicación. Puede ser utilizarlo para implementar seguridad en la aplicación, conteo de usuarios, entre otros. Programación: El archivo Global.asax hereda de la clase HttpApplication, mantiene un pool de objetos de tipo HttpApplication y los asigna a la aplicación cuando esta lo necesita. Dentro de los eventos de Global.asax, podemos encontrar los siguientes: Application_Init: Se dispara cuando una aplicación es inicializada o la primera vez que es llamada. Esto invoca a todas las instancias de objetos de tipo HttpApplication. Application_Disposed: Se dispara justo antes de que una aplicación sea destruida. Este método es ideal para limpiar anteriormente recursos que fueron utilizados. Application_Error: Se dispara cuando una excepción no controlada ocurre en la aplicación. Application_Start: Se dispara cuando se ha creado la primera instanciade la clase HttpApplication. Esto permite crear objetos que son accesibles a las todas las instancias de HttpApplication. Application_End: Se dispara cuando la última instancia de la clase HttpApplication es destruida. Este método es solamente lanzado una vez durante la vidade la aplicación. Application_BeginRequest: Se dispara cuando una petición de la aplicación es recibida, ocasionalmente es una petición de URL que los usuarios colocan. Application_EndRequest: El útimo evento disparado para una petición de la aplicación. Application_PreRequestHandlerExecute: Se dispara cuando se empieza a ejecutar algún evento como una página o un servicio web. pplication_PostRequestHandlerExecute: Se dispara cuando el framework ASP.NET ha terminadode ejecutar un evento. Application_PreSendRequestHeaders: Se dispara antes de que el framework envié cabeceras HTTP a un cliente solicitante (navegador). Application_PreSendContent: Se dispara antes de que el framework envié contenido a un cliente solicitante (navegador). Application_AcquireRequestState: Se dispara cuando el framework obtiene el estado actual (Session state) relacionado con la petición actual. Application_ReleaseRequestState: Se dispara cuando el framework de la página ASP.NET completa la ejecución de todos los manejadores de eventos. Application_ResolveRequestCache: Cuando se completa una petición de autorización. Esto permite que los módulos de cacheo atiendan la petición desde la cache, pasando la ejecución del manejador. Application_UpdateRequestCache: Cuando se completa le ejecución del manejador para permitir que los módulos de cache almacenen las respuestas que serán utilizadas para peticiones subsecuentes. Application_AuthenticateRequest: Cuando un módulo de seguridad que ha establecido que la identidad del usuario actual es válida. En este punto, las credenciales del usuario han sido validadas. Application_AuthorizeRequest: Cuando un módulo de seguridad ha verificado que el usuario puede acceder a los recursos. Session_Start: Se dispara cuando un usuario nuevo visita la aplicación web. Session_End: Se dispara cuando la sesión del usuario se ha agotado, terminado o haya dejado la página web Ejercicios: 1. Para el ejemplo dado, cree un pantalla para cambio de clave, y una para registro de usuarios. 2. Cree una sitio web, y aplique un sistema de seguridad. 3. Elabore script en que demuestre el uso de variables de sesión y de aplicación.