我正在尝试在我的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?
答案 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