Что такое" подписанные " 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