首页 > 解决方案 > 使用 Firebase 和 Electron 管理会话 Cookie

问题描述

我正在尝试在我的 Node 服务器中设置会话 cookie,它是 Electron 应用程序的后端。我正在尝试遵循本指南。

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

我感到困惑的第一件事是这个函数在“登录”部分的来源:const csrfToken = getCookie('csrfToken') '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 令牌是否与请求 cookie 的 CSRF 令牌中设置的相同?这是因为有人可能会手动设置 CSRF 令牌(即使用 Postman),但这样的请求不会通过,因为它不在req.cookies?这是否意味着不应该在他们的客户端代码中设置 req.cookies ?

标签: firebasefirebase-authenticationelectroncsrffirebase-admin

解决方案


getCookie基本上是一个 cookie getter。您可以自己编写或在线查找实现。至于 CSRF 检查,这是对 CSRF 攻击的基本防御。CSRF 令牌设置在 cookie 中,然后在帖子正文中返回。后端将确认 cookie 中的 CSRF 令牌与 POST 正文中的令牌匹配。基本上这里的想法是只有来自您网站的请求才能读取 cookie 并将其传递到 POST 正文中的请求中。如果请求来自另一个网站,他们将无法读取 cookie 并将其传递到 POST 正文中。尽管 CSRF 令牌 cookie 将始终随请求一起传递,即使来自其他来源也是如此,但令牌在 POST 正文中将不可用。

快速入门 node.js 实现位于:https ://github.com/firebase/quickstart-nodejs/tree/master/auth-sessions


推荐阅读