04/11/2011
Primera entrega introductoria de una serie de artículos sobre la gestión de sesiones web. En esta primera parte, se muestra su necesidad y en qué consiste. I de VII.
Esta serie de artículos sobre la gestión segura de sesiones web, de la que dependen un gran número de los servicios de Internet, comienza describiendo qué es una sesión y el principal medio por el que se consigue: los identificadores de sesión.
Los portales web reconocen las acciones que el usuario ha realizado anteriormente: si se ha registrado, qué elementos ha visitado, las compras añadidas a la cesta, etc. Y según está información modifican su contenido o funcionalidad. Para conseguir esto, establecen una sesión web entre el servidor y navegador web del usuario.
Si HTTP, el protocolo con el que se interectúa con las páginas web, no está orientado a conexión, ya que por sí mismo no proporciona manera de almacenar las acciones que el navegante realiza en una página web, ¿cómo es posible? (*).
(*) Aunque HTTPS sí está orientado a conexión la información que almacena sólo es relativa a la gestión de la conexión segura.
Para mantener sesiones web el navegador y el servidor web comparten un identificador único que el navegador web incluye en cada petición HTTP o HTTPS al portal (generalmente mediante cookies aunque existen otros métodos). De este modo, por medio de este identificador, el servidor web puede reconocer que la petición que recibe pertenece a un determinada sesión, almacenar la información de esta petición que le interese y responder a ella según la información almacenada anteriormente.
Normalmente, al autenticarse un usuario en una página web o portal, se incluye en la información de sesión el identificador del usuario; de este modo, en peticiones HTTP posteriores el portal reconoce a través del identificador de sesión a qué usuario corresponde esa petición y puede asociarle las peticiones realizadas y personalizar su contenido según él. Del mismo modo, al salir un usuario de un portal o aplicación web se debe cerrar la sesión web.
En la siguiente imagen se pude apreciar un diálogo entre el navegador y el servidor web capturado con el complemento de Firefox Live HTTP headers, aunque también se puede utilizar ieHTTPHeaders para Internet Explorer:
La imagen muestra como, en un primer momento, el servidor envia una cabecera en la que solicita que el cliente almacene una cookie que contiene el identificador de sesión y, posteriormente, el navegador incluye esta cookie para que el servidor reconozca que la petición pertenece a una determinada sesión.
Otra ventaja del uso de los identificadores de sesión es que permiten que la información asociada a la sesión está almacenada en el servidor, un entorno de seguridad más controlado, al que no tiene acceso el cliente directamente.
Como se verá en próximos artículos, el identificador de sesión debe ser aleatorio y confidencial, para evitar que sea generado o capturado para suplantar sesiones web de otros usuarios.