Protección de robo de cookies de sesión

14

Estoy analizando cómo proteger un sitio web para que no le roben su cookie de sesión. Estos son los controles que sé que son ampliamente conocidos / utilizados:

  • HTTPS en todas partes
  • Utilice solo una cadena aleatoria creada de forma segura para el valor de la cookie
  • Marque la cookie de sesión Segura y Http
  • Cambiar la cookie de sesión al iniciar sesión

Estoy debatiendo usando una sugerencia que encontré en rastreador de errores Tomcat . Para cada sesión almacene la siguiente información adicional:

  • ID de sesión SSL
  • Agente de usuario HTTP
  • Dirección IP remota

En cada solicitud, validaría que dos de los tres valores almacenados coincidan con lo que se captura en la sesión. De esa manera, uno de los tres podría cambiar por varias razones sin afectar al usuario. Sería altamente improbable que un usuario normal cambie más de uno por solicitud.

¿Esto parece una defensa adicional razonable para la cookie de sesión?

    
pregunta chotchki 15.05.2013 - 19:00
fuente

2 respuestas

14

Desde la perspectiva del desarrollador del sitio, debe usar lo siguiente:

  • Adopte SSL: use SSL en todo el sitio.
  • Establezca el indicador secure en todas las cookies. Esto asegurará que solo se envíen a través de una conexión SSL.
  • Activa HSTS.

Esto asegurará que solo se pueda acceder a las cookies de sesión a través de SSL y lo protegerá de escuchas ilegales y ataques de intermediarios.

Busque SSL en todo el sitio en este sitio para encontrar muchas referencias sobre cómo hacer esto.

No me molestaría en verificar el Agente de usuario HTTP o la dirección IP remota. No agregan mucha seguridad y romperán el uso legítimo en ciertos escenarios. Verificando el ID de sesión SSL (enlace de sesión SSL) estaría bien desde una perspectiva de seguridad, pero puede ser un poco difícil de configurar y no sería una prioridad para mí: las otras defensas están bien.

Otro consejo:

Si su preocupación es el robo de cookies a través de XSS, la mejor defensa es utilizar métodos estándar para evitar errores de XSS en su aplicación web. Consulte OWASP para ver muchos recursos excelentes (querrá usar el escape de salida dependiente del contexto).

Mencionas "fijación de sesión" como etiqueta, pero esa es una amenaza muy diferente. La defensa contra la fijación de sesión es utilizar un marco que no sea vulnerable a la fijación de sesión. La mayoría de los marcos de desarrollo de aplicaciones web modernas deberían encargarse de esto sin necesidad de realizar ningún trabajo adicional.

Siga las prácticas seguras de desarrollo de aplicaciones web. OWASP tiene muchos recursos excelentes sobre esto.

Lee atentamente el consejo de @Rook y síguelo.

    
respondido por el D.W. 14.06.2013 - 22:25
fuente
0

La verificación de la implementación 2/3 funcionaría bien. No he probado esto o incluso sé si es un método viable, pero también podría implementar un tipo de "cambio de clave" donde la clave de sesión cambia con cada solicitud, reduciendo la ventana de ataque.

    
respondido por el Nathan C 15.05.2013 - 20:36
fuente

Lea otras preguntas en las etiquetas