Session Management Cheat Sheet Español



{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |- Last revision (mm/dd/yy): // = Introducción =
 * valign="top" style="border-right: 1px dotted gray;padding-right:25px;" |

Autentificación Web, Manejo de sesiones y Control de Acceso

Una sesión Web es una secuencia de solicitudes de red HTTP y respuestas de transacción asociadas a un mismo usuario. Las aplicaciones Web modernas y complejas requieren mantener la información o el estado sobre cada usuario a lo largo de las múltiples solicitudes. Por lo tanto, las sesiones proporcionan una forma de establecer variables – como el derecho de acces y los ajustes de localización – que serán aplicadas a todas y cada una de las interacciones que el usuario tenga con la aplicación Web a lo largo de toda una sesión.

Las aplicaciones web pueden crear sesiones para realizar un seguimiento de los usuarios anónimos después de la primera solicitud de éstos. Un ejemplo podría ser mantener la preferencia de idioma del usuario. Adicionalmente, las aplicaciones Web harán uso de las sesiones una vez que el usuario haya sido autentificado. Esto asegura la capacidad de identificar al usuario en cualquier solicitud posterior así como también, aplicar los controles de acceso de seguridad, el acceso autorizado a los datos privados del usuario e incrementar la usabilidad de la aplicación. Por lo tanto, las aplicaciones web actuales pueden proporcionar las capacidades de sesión, tanto pre como post autentificación.

Una vez que una sesión autentificada ha sido establecida, el ID de sesión (o token) es temporalmente equivalente al método de autentificación más fuerte utilizado por la aplicación, tales como nombres de usuario y contraseña, frases de paso, contraseñas de un solo uso (OTP), certificados digitales basados en el cliente, tarjetas inteligentes o biometría (como las huellas dactilares o la retina del ojo). Ver la Guía de Referencias de OWASP sobre Autentificación.

HTTP es un protocolo sin estado (RFC 2616), donde cada par de solicitud y respuesta es independiente de otras interacciones web. Por lo tanto, a fin de introducir el concepto de una sesión, se requiere poner en práctica las capacidades del manejo de sesión que vincula tanto los módulos de autentificación y del control de acceso (o autorización) comúnmente disponibles en una aplicación Web:



El ID de sesión o token, enlaza las credenciales de autentificación del usuario (en la forma de una sesión de usuario) al tráfico HTTP del usuario y los controles de acceso apropiados, aplicados por la aplicación web. La complejidad de estos tres componentes (autentificación, manejador de sesiones y control de acceso) en las aplicaciones Web modernas, sumado al hecho de que su vínculo e implementación reside en las manos del desarrollador (como marco de desarrollo web no provee relaciones estrictas entre estos módulos), hace a la implementación de un módulo de manejo de sesiones seguro, un gran desafío.

La divulgación, captura, predicción, fuerza bruta, o la fijación del ID de sesión dará lugar a taques de secuestro de sesión (o sidejacking), donde un atacante es capaz de hacerse pasar por un usuario víctima en la aplicación Web. Los atacantes pueden realizar dos tipos de ataques de secuestro de sesión, dirigidos o genéricos. En un ataque dirigido, el objetivo del atacante es hacerse pasar por su víctima, un usuario específico (o privilegiado) de la aplicación Web. Para los ataques genéricos, el objetivo del atacante es hacerse pasar por (o ganar acceso como) cualquier usuario válido o legítimo de la la aplicación Web.

= Autores y Editores Principales =

Raul Siles (DinoSec) - raul[at]dinosec.com

Traducción al idioma Español:

Eugenia Bahit