¿El uso de un ID de sesión SSL junto con una verificación de sesión basada en cookies es más seguro o no?

2

Estoy usando Django, que es un marco web para Python. Me encanta pero el manejo de la sesión está basado en cookies. Ahora sobre SSL, estoy seguro de que es razonablemente "seguro", pero no creo que exista ningún tipo de protección contra fallas si se compromete esa cookie. También debo mencionar que estoy usando Apache2 con Mod_WSGI. Para cada sesión de Apache2 hay una variable de entorno SSL_SESSION_ID que puedo obtener del módulo de python raíz. Específicamente, mi pregunta es si se requiere que SSL_SESSION_ID de Apache2 coincida con la cookie Session_Key en la base de datos (y el navegador del cliente) en realidad ayuda a prevenir cosas como un ataque MITM o el secuestro de una sesión o ¿es una pérdida de esfuerzo? Por un lado, estoy pensando que podría porque el cliente no tiene idea (PIENSO) sobre el SSL_SESSION_ID por lo que no pudieron falsificarlo. Por otro lado, estoy pensando que si un atacante pudiera comprometer el cifrado o el navegador lo suficiente como para obtener la cookie, entonces probablemente solo podrían obtener la contraseña y comenzar una nueva sesión.

    
pregunta p1l0t 17.01.2014 - 00:14
fuente

2 respuestas

5

El ID de sesión SSL es transitorio; Designa los "parámetros de sesión SSL" que el cliente recuerda acerca de un protocolo de enlace SSL anterior, en particular el valor secreto simétrico negociado obtenido de la criptografía asimétrica de ese protocolo de enlace. Se mantiene en RAM solamente; si el usuario se reinicia, o incluso simplemente cierra todas las ventanas de su navegador, entonces se olvida de la ID de sesión. Si utiliza la ID de sesión SSL como parte del mecanismo de autenticación, los usuarios que cierren y vuelvan a abrir su navegador tendrán que autenticarse nuevamente con su contraseña.

Si eso es lo que quieres, entonces, por todos los medios, usa el ID de sesión SSL. Sé de bancos que hacen eso por su administración de cuentas bancarias basadas en la Web.

Tenga en cuenta que si el servidor se reinicia, el ID de sesión SSL también quedará obsoleto: incluso si se almacena en la base de datos, el servidor reiniciado ha olvidado la clave de la sesión real (el servidor también lo almacena solo en la RAM), y por lo tanto negociará una nueva sesión con un apretón de manos completo en la próxima conexión del cliente. Además, la memoria del servidor de las sesiones anteriores es configurable pero a menudo está limitada en el tiempo (con Apache, consulte la documentación , directivas SSLSessionCache y SSLSessionCacheTimeout ). También tenga cuidado de que la memoria del cliente se base en el proceso : en una PC, cerrar todas las ventanas tiende a terminar el proceso del navegador; en los teléfonos inteligentes y las tabletas, a quienes les gusta mantener las cosas funcionando durante un tiempo excesivo, realmente matar el proceso es un proceso más complicado (por lo general, el navegador se "cierra" solo cuando el usuario se queda sin batería).

Por otro lado, para los sitios menos críticos (en el punto de vista del usuario), los usuarios tienden a preferirlo cuando se autentican una vez , y son "recordados" incluso entre reinicios o incluso navegadores. cerrar. Para que funcione una característica así, no hay que evitarla: debe haber algún secreto específico del usuario almacenado en el lado del cliente. Las cookies no son peores que cualquier otro mecanismo para eso, y son casi el único que está disponible y es compatible con todos los navegadores.

Resumen: use el ID de sesión SSL si desea sesiones muy transitorias, que desaparecen automáticamente cuando se cierra el navegador (el proceso del navegador, no solo la ventana correspondiente) . Utilice cookies para la autenticación de mayor duración. No son intercambiables; no operan en la misma escala de tiempo.

    
respondido por el Tom Leek 17.01.2014 - 13:23
fuente
1

Si está hablando estrictamente de seguridad, SSL es suficiente.

  1. SSL evitará un ataque MITM (a menos que se comprometa la clave privada del servidor o se divulgue la clave negociada).
  2. Si alguien roba la cookie de un cliente, entonces la PC del cliente está comprometida y usted no puede hacer nada al respecto. El atacante ahora tiene control total y puedes agregar tantos tokens / seguridad como quieras, pero el atacante tiene acceso completo.

De todos modos, siempre puede usar una cookie para identificar a un usuario por cualquier motivo, es decir, rastrear su actividad dentro de diferentes conexiones, anuncios, contar visitas únicas, etc.     

respondido por el kiBytes 17.01.2014 - 08:19
fuente

Lea otras preguntas en las etiquetas