Управление сессионными куки-файлами с помощью Firebase и Electron - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь настроить сеансовые куки на моем Node-сервере, который является бэкэндом для приложения Electron.Я пытаюсь следовать этому руководству.

https://firebase.google.com/docs/auth/admin/manage-cookies

Первое, что меня смущает, - это откуда взялась эта функция в разделе «Вход»: const csrfToken = getCookie('csrfToken') Is 'getCookie'функцию, которую я должен написать сам?

Я также не полностью следую логике фрагмента "создать файл cookie сеанса":

const csrfToken = req.body.csrfToken.toString();
  // Guard against CSRF attacks.
  if (csrfToken !== req.cookies.csrfToken) {
    res.status(401).send('UNAUTHORIZED REQUEST!');
    return;
  }

Так что это похоже на проверку, чтобы увидетьесли маркер CSRF тела запроса - то же самое, что установлено в токене CSRF куки-запроса?Это потому, что кто-то может установить токен CSRF вручную (то есть, используя Postman), но такой запрос не будет выполнен, потому что он не в req.cookies?Означает ли это, что никто не должен устанавливать req.cookies в своем клиентском коде?

1 Ответ

0 голосов
/ 29 мая 2018

getCookie является в основном получателем печенья.Вы можете написать это самостоятельно или посмотреть реализацию в Интернете.Что касается проверки CSRF, то это базовая защита от CSRF-атак.Маркер CSRF устанавливается в файле cookie, а затем возвращается обратно в тело сообщения.Бэкэнд подтвердит, что токен CSRF в файле cookie соответствует токену в теле сообщения POST.По сути, идея заключается в том, что только запросы, поступающие с вашего веб-сайта, могут прочитать cookie и передать его в запросе в теле сообщения POST.Если запрос поступает с другого веб-сайта, они не смогут прочитать файл cookie и передать его в теле сообщения POST.Хотя cookie-токен CSRF всегда будет передаваться по запросу, даже если он поступает из других источников, токен не будет доступен в теле POST.

Реализация быстрого запуска node.js доступна по адресу: https://github.com/firebase/quickstart-nodejs/tree/master/auth-sessions

...