Mejor seguridad: ID de sesión en cookies vs. cookie encriptada

4

Debatiendo estos dos métodos para almacenar datos de sesión:

  • enlace (Almacene todos los datos de la sesión en la cookie y cifrelos)
  • enlace (ID de sesión en cookies y uso de la base de datos para almacenar datos de sesión)

No estoy seguro de cuál es más seguro porque después de leer un poco sobre los aspectos internos de las sesiones de nodo-cliente, hay muchos posibles vectores de ataque que deben tenerse en cuenta, y no estoy seguro de cuánto representan. . Por ejemplo, representan un ataque de tiempo usando un algoritmo de tiempo constante en un lugar. Pero hay muchas más vulnerabilidades potenciales y, al no ser un experto, no puedo decir qué tan bien está hecho como una biblioteca.

Por otro lado, he visto a personas decir que almacenar id de sesión en la base de datos es un no ir. Pero al menos aquí podría incluir en la lista negra el ID de sesión.

Cualquier consejo u orientación sería muy apreciado. Gracias.

    
pregunta Lance Pollard 26.11.2017 - 04:39
fuente

2 respuestas

3

La diferencia de seguridad estará principalmente en los detalles de la implementación. Fundamentalmente, ambos enfoques son los mismos: almacena un blob de datos que no tiene sentido para el cliente en el cliente para preservar algún estado entre las solicitudes. La diferencia es que las cookies de identificación de sesión no tienen significado en sí mismas porque no representan ninguna información significativa, mientras que la cookie cifrada no tiene sentido porque el cliente no posee la capacidad de descifrar los datos.

Las cookies cifradas son fundamentalmente más complejas: tienen un tamaño mayor, requieren un algoritmo complejo, requieren que el algoritmo se implemente correctamente, contienen datos reales y, por lo tanto, vale la pena atacarlas, requieren la administración de un llave secreta. También son más difíciles de revocar debido a su naturaleza descentralizada.

Las cookies de identificación de sesión son simples: una identificación aleatoria sin sentido simplemente se refiere a los datos almacenados en otro lugar. La única vulnerabilidad * es la capacidad de diagnóstico, que es bastante fácil de prevenir al aumentar la longitud y la rotación y caducidad de las identificaciones. No tengo idea de por qué almacenar los identificadores de sesión / datos en una base de datos sería una mala idea de ninguna manera; Mientras la base de datos sea segura, no hay problema allí. Si su almacén de datos es propenso a ataques, tiene problemas más grandes que donde se almacenan los datos de su sesión.

(* Aparte del secuestro directo, que es la misma vulnerabilidad para todas las cookies, y fallas específicas de la implementación como aceptar identificadores de sesión indefinidos, etc.)

Teniendo en cuenta eso, debe decidir si el aumento de la superficie de ataque de las cookies cifradas vale los beneficios de los servidores sin estado y si confía en la implementación del cifrado. Para una alta escalabilidad, lo estudiaría seriamente, para servicios a pequeña escala lo mantendría lo más simple posible.

    
respondido por el deceze 26.11.2017 - 21:06
fuente
2

Dado que acabo de hacer una pregunta en crypto, no me consideraría un experto, pero:

a) Si está correctamente encriptada, los datos en la cookie deberían estar bien ...

  • Usted está, al final del día, almacenando los datos en la máquina de los usuarios finales. No es tan bueno para las máquinas compartidas, pero se puede argumentar que lo más probable es que el algoritmo sea lo suficientemente fuerte
  • Si hay mucha información, la estás transfiriendo de un lado a otro con cada carga de página, por lo que podrías ralentizar tu aplicación.

b) Si está utilizando una conexión SSL, una ID de sesión también debería estar bien (con la longitud adecuada)

  • Regenerar claves de sesión
  • Dependiendo de su aplicación, puede minimizar la visualización de datos personales. p.ej. Si utiliza la sesión para realizar un seguimiento del progreso de los usuarios pero no les presenta su información (a través de la sesión), podría decirse que esto podría ser más seguro.
respondido por el user164613 26.11.2017 - 05:07
fuente

Lea otras preguntas en las etiquetas