firebase - 使用 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 ?
解决方案
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
推荐阅读
- php - Symfony crontab 问题
- python - 创建所有正则表达式的列表
- git - git log 命令不显示 HEAD 信息
- node.js - 502 Bad Gateway for NodeJS 服务器由 lxc 容器内的 PM2 管理
- bash - 在 sftp 中创建目录和子目录的脚本
- angular - mat-select in Angular Material - 有没有办法拦截选择事件的关闭
- javascript - 在 React Native 中显示来自 json 文件的图像
- url-rewriting - 使用 Sitecore URL 重写模块附加查询字符串
- clion - Eigen3 和 Clion:如何在 Clion ide 中显示矩阵内容?
- reactjs - Nextjs 生产应用程序上的页面刷新中断样式