使用 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.cookie?

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

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

最新更新