Node.js.Зашифрованные и подписанные куки - PullRequest
0 голосов
/ 24 мая 2018

Я хочу получить значения из моего cookie.

Я использую passport.js, и в этом квесте я пробовал разные вещи.

  1. Я бегуreq.cookies;, что дает мне следующее:

    's:x05d6V5Dhf6efFGjIkO26Ka1.imN4lT7OhW83Nc9Z7vw5dFbCoQhanP3aa37iyNWQyvU' }
    

    Является ли это подписанным cookie или зашифрованным cookie?

    В начале 's:' делает его похожим на подписанный, однако когдаЯ побежал req.signedCookies;, я получил пустой объект {}.Итак, этот файл cookie подписан или зашифрован?

    Затем я запустил: req.sessionID;, который вернул это:

    x05d6V5Dhf6efFGjIkO26Ka1
    

    Как вы можете видеть, он также содержится в моем файле cookie доточка.Итак, я думаю, что sessionId хранится в моем cookie, верно?

    Затем я запустил req.secret;, что в свою очередь вернуло undefined.

  2. Является ли секретв сеансе, который объявлен здесь:

    app.use(express.session({ secret: 'blablablabla' }));
    

    используется для подписи cookie или для его шифрования?

  3. Модуль cookie-подписи может только подписать cookieа не расшифровывать их - это правильно?Он может подписать его, основываясь на секрете предыдущего сеанса?

  4. Наконец, где хранится этот файл cookie?По моему монго дб?

1 Ответ

0 голосов
/ 25 апреля 2019

Часть после точки:

imN4lT7OhW83Nc9Z7vw5dFbCoQhanP3aa37iyNWQyvU

является подписью идентификатора сеанса:

x05d6V5Dhf6efFGjIkO26Ka1

То есть идентификатор сеанса зашифрован с секретом и добавлениемк идентификатору сеанса с точкой, чтобы составить печенье.

Секрет не содержится в cookie.

Модуль cookie-подписи может подписать cookie, если вы предоставили правильную информацию:

cookie-signature.ungisn(`${the_original_sessionid}.${the_encypted_sessionid}`,secret)
...