Что такое" подписанные " cookies в connect / expressjs?

Я пытаюсь выяснить, что такое "подписанные куки" на самом деле. В сети не так много, и если я попробую это:

app.use(express.cookieParser('A secret'));

но все равно... Cookies по-прежнему на 100% нормальны в браузере, и я действительно не знаю, что здесь "подписано" (я надеялся "увидеть" какую-то странность на клиенте, что-то вроде данных, зашифрованных с использованием "секрета" в качестве соли?)

в документации говорится (https://github.com/expressjs/cookie-parser):

парсить Cookie заголовок и заполнить req.cookies с объектом ввел имена cookie. Необязательно вы можете включить поддержку подписанных файлов cookie, передав а secret строка, которая присваивает req.secret так он может использоваться другими промежуточными программами.

кто-нибудь знает?

Merc.

3 ответов


файл cookie по-прежнему будет виден, но у него есть подпись, поэтому он может определить, изменил ли клиент файл cookie.

он работает, создавая HMAC значения (текущий cookie), и base64 закодировал его. Когда файл cookie считывается, он пересчитывает подпись и удостоверяется, что она соответствует подписи, прикрепленной к нему.

если он не соответствует, то это даст ошибку.

если вы хотите скрыть содержимое cookie, а также, вы должны зашифровать его вместо этого (или просто сохраняет его в сеансе на стороне сервера). Я не уверен, есть ли промежуточное ПО для этого уже там или нет.

редактировать

и для создания подписанного cookie вы бы использовали

res.cookie('name', 'value', {signed: true})

и для доступа к подписанному cookie используйте


Yup, как emostar упоминает, это просто для того, чтобы убедиться, что значение не было изменено. Он помещен в другой объект (req.signedCookies), чтобы различать их, позволяя разработчику проявлять намерение. Если они хранились в req.печенье вместе с другими кто-то мог просто создать неподписанное печенье с тем же именем, победив всю цель их.


Я искал довольно большой для хорошего ответа на это... И глядя на исходный код cookie-signature, который используется cookie-parser подписать подписанные файлы cookie дали мне лучшее понимание того, что такое подписанный файл cookie.

val - это, конечно, значение cookie, и secret - это строка, которую вы добавляете в качестве опции cookie-parser

https://github.com/visionmedia/node-cookie-signature/blob/master/index.js#L16