This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org
Difference between revisions of "Session Management Cheat Sheet Español"
Eugeniabahit (talk | contribs) |
Eugeniabahit (talk | contribs) |
||
Line 26: | Line 26: | ||
− | 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. | + | 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. |
+ | |||
+ | |||
+ | = Características del ID de Sesión = | ||
+ | Para mantener el estado autentificado y hacer un seguimiento del progreso del usuario dentro de la aplicación web, éstas deben proporcionar al usuario un identificador de sesión (ID de Sesión o token) que es asignado al momento de crear la sesión y es compartido e intercambiado entre el usuario y la aplicación Web durante toda la sesión (esto es enviado en cada solicitud HTTP). El ID de sesión se compone de un par "nombre=valor". | ||
+ | |||
+ | Con el objetivo de implementar ID de sesión seguros, la generación de identificadores (IDs o tokens) debe reunir las siguientes características: | ||
+ | |||
+ | |||
+ | == Huella digital del nombre del ID de Sesión == | ||
+ | El nombre utilizado por el ID de sesión no debe ser muy descriptivo ni ofrecer detalles innecesarios sobre el propósito y el significado de éste. | ||
+ | |||
+ | A los nombres de ID de sesión usados por los marcos de desarrollo más comunes, tales como PHPSESSID (PHP), JSESSIONID (J2EE), CFID & CFTOKEN (ColdFusion), ASP.NET_SessionId (ASP .NET), etc., se les puede obtener la huella digital fácilmente. Por lo tanto, el nombre del ID de sesión puede revelar las tecnologías y los lenguajes de programación utilizados por la aplicación web. | ||
+ | |||
+ | Se recomienda cambiar el nombre de ID de sesión por defecto, a un nombre genérico como "id". | ||
+ | |||
+ | == Longitud del ID de sesión == | ||
+ | |||
+ | El ID de sesión debe ser lo suficientemente largo para evitar ataques de fuerza bruta, en los que un atacante puede recorrer un rango de valores de ID y verificar la existencia de sesiones válidas. | ||
+ | |||
+ | La longitud del ID de sesión debe ser de al menos 128 bit (16 bytes). | ||
+ | |||
+ | '''''Observaciones''''': La longitud de un ID de sesión de 128 bits se proporciona como una referencia sobre la base de las hipótesis formuladas en la siguiente sección "Entropía del ID de Sesión". Sin embargo, este número no debe ser considerado como un valor mínimo absoluto, como otros factores de implementación podrían influir en su fuerza. Por ejemplo, existen implementaciones, tales como Microsoft ASP.NET, haciendo uso de números aleatorios de 120 bits para sus identificadores de sesión (representados por cadenas de texto de 2 [10]) que pueden proporcionar una muy buena entropía efectiva y, como resultado, puede ser considerado suficientemente largo para evitar adivinar o atacar con fuerza bruta. | ||
Revision as of 02:02, 6 August 2015
Last revision (mm/dd/yy): 08/6/2015 IntroducciónAutentificació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.
Características del ID de SesiónPara mantener el estado autentificado y hacer un seguimiento del progreso del usuario dentro de la aplicación web, éstas deben proporcionar al usuario un identificador de sesión (ID de Sesión o token) que es asignado al momento de crear la sesión y es compartido e intercambiado entre el usuario y la aplicación Web durante toda la sesión (esto es enviado en cada solicitud HTTP). El ID de sesión se compone de un par "nombre=valor". Con el objetivo de implementar ID de sesión seguros, la generación de identificadores (IDs o tokens) debe reunir las siguientes características:
Huella digital del nombre del ID de SesiónEl nombre utilizado por el ID de sesión no debe ser muy descriptivo ni ofrecer detalles innecesarios sobre el propósito y el significado de éste. A los nombres de ID de sesión usados por los marcos de desarrollo más comunes, tales como PHPSESSID (PHP), JSESSIONID (J2EE), CFID & CFTOKEN (ColdFusion), ASP.NET_SessionId (ASP .NET), etc., se les puede obtener la huella digital fácilmente. Por lo tanto, el nombre del ID de sesión puede revelar las tecnologías y los lenguajes de programación utilizados por la aplicación web. Se recomienda cambiar el nombre de ID de sesión por defecto, a un nombre genérico como "id". Longitud del ID de sesiónEl ID de sesión debe ser lo suficientemente largo para evitar ataques de fuerza bruta, en los que un atacante puede recorrer un rango de valores de ID y verificar la existencia de sesiones válidas. La longitud del ID de sesión debe ser de al menos 128 bit (16 bytes). Observaciones: La longitud de un ID de sesión de 128 bits se proporciona como una referencia sobre la base de las hipótesis formuladas en la siguiente sección "Entropía del ID de Sesión". Sin embargo, este número no debe ser considerado como un valor mínimo absoluto, como otros factores de implementación podrían influir en su fuerza. Por ejemplo, existen implementaciones, tales como Microsoft ASP.NET, haciendo uso de números aleatorios de 120 bits para sus identificadores de sesión (representados por cadenas de texto de 2 [10]) que pueden proporcionar una muy buena entropía efectiva y, como resultado, puede ser considerado suficientemente largo para evitar adivinar o atacar con fuerza bruta.
Autores y Editores PrincipalesRaul Siles (DinoSec) - raul[at]dinosec.com
Eugenia Bahit |