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


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

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

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

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

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

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

Merc.

3 83

3 ответа:

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

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

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

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

Edit

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

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

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

да, как 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