¿Qué mitigaciones adicionales son necesarias debido a "Continuar donde lo dejé"?

1

Trabajo con sitios confidenciales que manejan información financiera, mi código protege más de cuatro mil millones de libras de activos.

Todos nuestros sitios tienen un botón de cierre de sesión y, además, utilizan cookies de sesión HttpOnly, Secure, para mantener la sesión de un usuario. Aunque esperamos que los usuarios hagan clic en el botón "Cerrar sesión", también anticipamos que algunos usuarios no lo harán; como resultado, confiamos en las cookies de sesión que se eliminarán cuando el usuario cierre el navegador.

Recientemente, me llamó la atención que los navegadores no siempre eliminan las cookies de sesión cuando las cierra. Chrome, específicamente, tiene una función de "Reanudar donde lo dejé" que persiste en las cookies de sesión una vez que se cierra el navegador, y lo que es más, esta opción está seleccionada de forma predeterminada. FireFox tiene una característica similar.

¿Qué mitigaciones adicionales ha implementado debido a esta característica? Consideramos algunos:

  1. OnBeforeUnload / Unload / PageHide controlador para eliminar las cookies cuando la ventana está cerrada. Lamentablemente, no puede eliminar las cookies de HttpOnly de esta manera.

  2. Cookies de sesión muy cortas que se actualizan continuamente (cada 30 segundos aproximadamente) a través de un script. Esto tiene problemas porque algunos navegadores (especialmente en teléfonos y tabletas) detienen la ejecución de Javascript cuando una pestaña está inactiva, por lo que esto tendría el efecto de eliminar a los usuarios cuando cambian de pestaña o cambian de ventana.

  3. Los controladores AJAX para mantener un latido con el servidor. Nuevamente, esto no funcionará cuando la pestaña esté inactiva.

¿Es necesaria alguna mitigación adicional? ¿O es el comprador, tenga cuidado si no se desconecta explícitamente? Curioso lo que otros profesionales de TI han hecho al respecto.

Nota: También utilizamos una cookie persistente con una ventana deslizante de diez minutos, y expiramos la sesión en el lado del servidor en diez minutos. El objetivo de este ejercicio es mitigar la actividad maliciosa que se produce dentro de la ventana de 10 minutos, por ejemplo. Si alguien te está observando cuidadosamente en un cibercafé y se hace cargo de tu estación de trabajo si no sales correctamente.

    
pregunta John Wu 28.01.2014 - 19:12
fuente

3 respuestas

1

Si su sitio es tan sensible, establezca una duración máxima de las cookies de 15 o 30 minutos, en lugar de la duración de la sesión del navegador. Y siempre es un comprador, tenga cuidado si está accediendo a su sitio desde una ubicación pública y no se desconecta.

Esto es lo que veo en cualquier sitio financiero que uso, desde bancos hasta tarjetas de crédito o cualquier otra cosa.

Edit: Supongo que eso no es del todo cierto. En algunos sitios, le permiten "registrar su computadora" ... esencialmente, le permiten omitir parte de la verificación de identidad una vez (o, más bien, realizar verificaciones de identidad adicionales antes) que la haya pasado una vez desde ese terminal. Es posible que pueda usar este método para permitir cookies de mayor duración en un terminal registrado, si el usuario así lo decide. Pero cuando se trata de aplicaciones financieras, lo mejor que puedes hacer es dar al usuario la menor cantidad de cable posible con el que colgarse. Otros tipos de aplicaciones son más tolerantes.

    
respondido por el Jason 28.01.2014 - 19:22
fuente
1

Una combinación de correctamente utilizado OnBeforeUnload y las cookies de corta duración pueden ayudarlo a lograr lo que desea.

La idea básica es enviar una solicitud HTTP cuando OnBeforeUnload se activa, y el servidor debe responder invalidando la cookie. De esa manera, no estará limitado por las restricciones de cookies de HttpOnly. Combine eso con las cookies de corta duración que se actualizan con cada acción realizada por el usuario (cada vez que un usuario realiza una acción, envíe una solicitud HTTP que establecerá el tiempo de la cookie en, por ejemplo, 5 minutos). Cualquier acción en 5 minutos, invalida la sesión en el servidor .

De esa manera, cuando el usuario cierre su navegador, la cookie se invalidará y se eliminará. Si sucede algo incorrecto y el usuario logra volver a abrir su navegador y "Continuar [s] donde [él] lo dejó", la sesión caducará por mucho tiempo en el servidor.

    
respondido por el Adi 28.01.2014 - 19:41
fuente
1

He trabajado en FS antes y diría que se trata de un comprador, tenga cuidado. Si está hablando de banca comercial o algo similar (lo que supongo que es si la expiración de una sesión de 15 minutos es demasiado larga) obtenga una redacción en los contratos sobre el uso del sistema solo desde sistemas de clientes de confianza. Si se trata de una banca minorista, debería estar en la educación del usuario, nunca iniciar sesión desde un sistema que no sea de confianza y utilizar siempre explícitamente la función de cierre de sesión de las aplicaciones.

El escenario de riesgo que está viendo, el inicio de sesión del usuario desde un sistema que no es de confianza en una ubicación que no es de confianza (por ejemplo, Internet Cafe) tiene una serie de riesgos tan malos o peores que una función del navegador que almacena cookies de sesión. Por ejemplo, probablemente un riesgo en ese entorno es el malware en la PC, en cuyo caso es probable que el atacante tome la cookie, bloquee a los usuarios para que no accedan al servidor y luego mantengan viva la sesión ...

Otro riesgo en ese entorno es el malware para el registro de pulsaciones de teclas que, a menos que esté utilizando 2-factor, prácticamente invalida la seguridad del sistema (el atacante tiene credenciales).

    
respondido por el Rоry McCune 28.01.2014 - 21:19
fuente

Lea otras preguntas en las etiquetas