Saya mencoba mencari tahu apa sebenarnya "cookie bertanda tangan". Tidak banyak di internet, dan jika saya mencoba ini:
app.use(express.cookieParser('A secret'));
Tapi tetap saja ... Cookie masih 100% normal di browser, dan saya tidak begitu tahu apa yang "ditandatangani" di sini (saya berharap untuk "melihat" beberapa keanehan pada klien, seperti data yang dienkripsi menggunakan "Rahasia" seperti garam?)
Dokumentasinya mengatakan ( https://github.com/expressjs/cookie-parser ):
Parse Cookie header dan isi
req.cookies
dengan objek yang dikunci oleh nama cookie. Secara opsional, Anda dapat mengaktifkan dukungan cookie bertanda tangan dengan meneruskansecret
string, yang menetapkanreq.secret
sehingga dapat digunakan oleh middleware lain.
Ada yang tahu
Merc.
express.cookieParser()
?res.cookie('somethingElseAgainAndAgain', 'signed? Maybe' );
tetapi ... Saya ragu itu menandatanganinya! Middleware cookieParser () siap untuk mengurai cookie yang ditandatangani, tetapi saya jelas tidak melakukan pengaturan dengan benar ... apakah saya harus menandatanganinya secara manual ...?(res.cookie(name, value, { signed: true }))
. Melaporkan "detail" yang hilang dari dokumentasi ...If it does not match, then it will give an error.
Bukan kesalahan . Hanya request.signedCookie untuk kunci itu yang tidak disetel . Jadi lebih seperti diabaikanYup seperti emostar menyebutkan itu hanya untuk memastikan bahwa suatu nilai tidak dirusak. Itu ditempatkan di objek yang berbeda (req.signedCookies) untuk membedakan keduanya, memungkinkan pengembang untuk menunjukkan maksud. Jika mereka disimpan dalam req.cookies bersama dengan yang lain, seseorang dapat dengan mudah membuat cookie unsigned dengan nama yang sama, mengalahkan tujuan keseluruhan dari cookie tersebut.
sumber
Saya telah mencari cukup ekstensif untuk jawaban yang bagus untuk ini ... Dan melihat kode sumber
cookie-signature
, yang digunakan olehcookie-parser
untuk menandatangani cookie yang ditandatangani telah memberi saya pemahaman yang lebih baik tentang apa itu cookie yang ditandatangani.val
tentu saja merupakan nilai cookie, dansecret
merupakan string yang Anda tambahkan sebagai opsicookie-parser
https://github.com/visionmedia/node-cookie-signature/blob/master/index.js#L16
sumber
Saya menggunakan cookie-parser versi 1.4.4.
Saya dapat menambahkan cookie yang ditandatangani dan cookie yang ditandatangani dienkripsi di browser, Jika saya mencoba mengedit cookie yang ditandatangani menggunakan editThisCookie (plugin chrome), maka cookie-parser mendeteksi perubahan eksternal dan kemudian menetapkan false sebagai nilai.
Header respons di browser, muncul sebagai
Dapatkan cookie yang ditandatangani
https://gist.github.com/dineshbalaji/607d166f0240f932a5cb02099b0ece4c
sumber