Sessions: securecookie: nilainya tidak valid

Dibuat pada 13 Okt 2013  ·  9Komentar  ·  Sumber: gorilla/sessions

Hai,
Saya mendapatkan kesalahan ini ketika mencoba memanggil store.Get() atas permintaan dari websocket.Conn.Request()

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

Kesalahan berasal dari fungsi verifikasiMac dari gorila/securecookie.

Komentar yang paling membantu

Anda tidak boleh menyematkan kunci/kredensial ke dalam kode sumber Anda. Sebagai gantinya, Anda harus meneruskannya melalui lingkungan - misalnya os.Getenv("APPNAME_SESSION_KEY") . Lingkungan tersebut dapat di-bootstrap oleh sistem penerapan Anda - dalam kasus k8s, menggunakan fungsionalitas Rahasia: https://kubernetes.io/docs/concepts/configuration/secret/#using -secrets-as-environment-variables

Semua 9 komentar

Bagaimana Anda menyelesaikannya? :)

Saya melihat ini juga dan ingin tahu cara menghapus/menyelesaikannya.

Apakah perilaku kesalahan konsisten? Atau apakah itu hanya memengaruhi beberapa permintaan?

Pada Kam, 18 Jun 2015 pukul 14:04 Dominic Hamon [email protected]
menulis:

Saya melihat ini juga dan ingin tahu cara menghapus/menyelesaikannya.


Balas email ini secara langsung atau lihat di GitHub
https://github.com/gorilla/sessions/issues/16#issuecomment -113047123.

Saya dapat mengurangi ini dengan mengembalikan halaman yang valid ketika saya menekan kesalahan (bukan 500) dan kemudian menghapus cookie secara manual dari browser. Saya pikir itu disebabkan oleh saya memperbarui kunci autentikasi/enkripsi tetapi memiliki cookie di sisi browser dari sesi yang ada.

saya tidak tahu apa cara yang tepat untuk mengurangi ini dalam jangka panjang, jadi saran apa pun diterima.

Jika Anda ingin menghindari ini, Anda memerlukan cara agar aplikasi Anda memigrasikan kunci.

Saya juga mengalami masalah ini. Saya akhirnya mengabaikan kesalahan itu, karena dokumen gorila/sesi mengatakan bahwa sesi baru masih dikembalikan. Anda masih dapat memanggil session.Save() , dan setelah itu browser yang meminta akan memiliki cookie sesi baru yang valid.

Saya menghadapi masalah yang sama dan agak sulit dikenali pada awalnya, masalahnya adalah saya punya
var store = sessions.NewCookieStore(securecookie.GenerateRandomKey(10))
jadi setiap kali saya me-restart server, kunci baru untuk toko dibuat, dan jika Anda sebelumnya telah menyimpan cookie ke browser web, maka itu akan menyebabkan kesalahan saat mencoba memecahkan kode cookie karena menggunakan kunci baru dan bukan kunci saat cookie dibuat pertama kali.
Ini bisa menjadi masalah yang sulit dikenali bahkan yang paling buruk ketika di-deploy ke dalam kubernetes, karena terkadang sebuah node (mesin) perlu di-restart dan node tersebut akan menghasilkan kuncinya sendiri dan itu dapat menyebabkan konflik dengan node lain. Saya akan merekomendasikan untuk tidak membuat kunci acak, sebagai gantinya, masukkan kunci secara manual sehingga Anda tidak akan menghadapi masalah itu, seperti:
var store = sessions.NewCookieStore([]byte("asdaskdhasdhgsajdgasdsadksakdhasidoajsdousahdopj"))

Anda tidak boleh menyematkan kunci/kredensial ke dalam kode sumber Anda. Sebagai gantinya, Anda harus meneruskannya melalui lingkungan - misalnya os.Getenv("APPNAME_SESSION_KEY") . Lingkungan tersebut dapat di-bootstrap oleh sistem penerapan Anda - dalam kasus k8s, menggunakan fungsionalitas Rahasia: https://kubernetes.io/docs/concepts/configuration/secret/#using -secrets-as-environment-variables

Saya juga terpengaruh karena token keycloak yang panjang.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat