Sesiones del lado del cliente del matraz

Empezando a aprender el marco de la aplicación web de Python‘s Flask , aún en la curva de aprendizaje, así que por favor, tengan paciencia conmigo.

Me pregunto qué tan apropiadas son las sesiones del lado del cliente para propósitos de aplicaciones web seguras. Por lo que parece, hay algunas preocupaciones serias:

  • Dado que todas las variables de sesión están serializadas y codificadas en una cookie, se debe tener cuidado con la cantidad de datos que almacenan allí, para mantener el tamaño de los datos http que viajan de un lado a otro en un tamaño razonable.
  • No estoy seguro de si los conjuntos clave / valor idénticos tienen valores serializados idénticos, pero si obtendría y almacenaría un valor de cookie en una sesión, ¿no puedo devolver el mismo valor, aunque cifrado, en otra sesión en otro momento? ¿Y hacer que el servidor crea que esos son valores de variable de sesión genuinos? Lo que el usuario tiene permitido hacer en un día no significa que lo mismo se permita en otro día. Y si esos valores de variable de sesión tienen que estar protegidos de forma segura todo el tiempo, ¿de qué sirve mantenerlos “en caché”? Luego tienen poco más propósito que dejarnos usar URLs bastante GET (es decir, en lugar de cadenas de consulta feas con algunos parámetros)

Entonces, tal vez la respuesta que estoy buscando son los límites de las sesiones del lado del cliente de Flask, considerando un posible ataque de intermediario (por supuesto, para sesiones http no seguras) o un usuario malicioso avanzado que almacena los valores de las cookies. para retransmitirlos más tarde.

  • No creo que deba preocuparse por el tamaño, ya que una cookie no puede almacenar más de 4 KB de datos de todos modos. Dudo mucho que te acerques a eso fácilmente.

  • Es tan seguro como otras sesiones, ya que probablemente pueda llevar la cookie PHPSESSID a algún otro navegador y hacer que funcione igual que puede hacerlo con esto. Nada lo impide. Sin embargo, hay soluciones para este problema, puede hacer que caduque después de un límite de tiempo. Vea esta pregunta por ejemplo. Tiene respuestas útiles sobre este tema.

Siempre puedes usar una sesión de base de datos si así lo deseas. Estoy seguro de que hay otras implementaciones que puedes encontrar también.

Edición: Aquí hay algunos otros.