使用Firebase和Electron管理会话Cookie

时间:2018-05-28 03:06:23

标签: firebase firebase-authentication electron csrf firebase-admin

我正在尝试在我的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令牌(即使用邮递员),但这样的请求不会通过,因为它不在req.cookies中?这是否意味着不应该在客户端代码中设置req.cookies?

1 个答案:

答案 0 :(得分:2)

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