Sessions: securecookie: el valor no es válido

Creado en 13 oct. 2013  ·  9Comentarios  ·  Fuente: gorilla/sessions

Hola,
Recibo este error cuando intento llamar a store.Get () en una solicitud de websocket.Conn.Request ()

session, err := store.Get(conn.Request(), "my_session")

El error se origina en la función verifyMac de gorilla / securecookie.

Comentario más útil

No debe incrustar claves / credenciales en su código fuente. En su lugar, debe pasarlos a través del entorno, por ejemplo, os.Getenv("APPNAME_SESSION_KEY") . Ese entorno puede ser arrancado por su sistema de implementación, en el caso de k8s, utilizando la funcionalidad Secrets: https://kubernetes.io/docs/concepts/configuration/secret/#using -secrets-as-environment-variables

Todos 9 comentarios

¿Cómo lo resolviste? :)

También estoy viendo esto y me encantaría saber cómo borrarlo / resolverlo.

¿El comportamiento de error es consistente? ¿O solo afecta a algunas solicitudes?

El jueves 18 de junio de 2015 a las 2:04 pm Dominic Hamon [email protected]
escribió:

También estoy viendo esto y me encantaría saber cómo borrarlo / resolverlo.

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/gorilla/sessions/issues/16#issuecomment -113047123.

Pude mitigar esto devolviendo una página válida cuando encontré el error (en lugar de 500) y luego borré la cookie manualmente del navegador. Creo que se debe a que actualicé las claves de autenticación / cifrado, pero tengo una cookie en el navegador de una sesión existente.

No sé cuál es la forma correcta de mitigar esto a largo plazo, por lo que cualquier consejo es bienvenido.

Si desea evitar esto, necesita una forma para que su aplicación migre las claves.

También me encontré con este problema. Terminé ignorando el error, ya que los documentos de gorilla / sessions dicen que todavía se devuelve una nueva sesión. Aún puede llamar a session.Save() , y luego el navegador solicitante tendrá una nueva cookie de sesión válida.

Estaba enfrentando el mismo problema y fue un poco difícil de detectar al principio, el problema es que tenía
var store = sessions.NewCookieStore(securecookie.GenerateRandomKey(10))
por lo que cada vez que reinicio el servidor, se genera una nueva clave para la tienda, y si previamente ha guardado la cookie en el navegador web, entonces causaría un error al intentar decodificar la cookie porque está usando la nueva clave y no es la clave cuando se creó la cookie al principio.
Esto podría ser un problema difícil de detectar incluso peor cuando se implementa en kubernetes, porque a veces un nodo (máquina) necesita reiniciarse y ese nodo generará su propia clave y eso podría causar un conflicto con los otros nodos. Recomendaría no generar una clave aleatoria, en su lugar, inserte manualmente una clave para que no se enfrente a ese problema, como:
var store = sessions.NewCookieStore([]byte("asdaskdhasdhgsajdgasdsadksakdhasidoajsdousahdopj"))

No debe incrustar claves / credenciales en su código fuente. En su lugar, debe pasarlos a través del entorno, por ejemplo, os.Getenv("APPNAME_SESSION_KEY") . Ese entorno puede ser arrancado por su sistema de implementación, en el caso de k8s, utilizando la funcionalidad Secrets: https://kubernetes.io/docs/concepts/configuration/secret/#using -secrets-as-environment-variables

También me afecta debido a un token de capa de llave larga.

¿Fue útil esta página
0 / 5 - 0 calificaciones