Что такое" подписанные " куки в 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 ответа:
файл 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