CSRF Firebase 云函数

问题描述

我想在我的 Firebase 函数中实现 CSRF,因为我使用 Cookie 来向我的云函数发送和接收数据。

据我所知 here 我也可以看到 __session cookie 只接受来自 here 的 cookie。这样,csurf 包与云函数的实现类似;

const csrf = require("csurf");
const admin = require("firebase-admin");
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
const csrfMiddleware = csrf({ cookie: true });
app.use(csrfMiddleware);

app.all("*",(req,res,next) => {
  res.cookie("XSRF-TOKEN",req.csrfToken());
  next();
});

行不通。但我现在找不到任何其他选择。

所以我在云功能方面的实现,login.js

 firebase.auth().signInWithEmailAndPassword(email,password).then(response => {
                let user = response.user;
                let payload = {}
                try {
                    let accessToken = user.xa;
                    let refreshToken = user.refreshToken;
                    res.cookie('__session',accessToken,{
                                httpOnly: true,expires: new Date(Date.now() + 24 * 3600 * 1000),maxAge: 24 * 3600 * 1000,secure: true,sameSite: "None"
                            })
                    res.cookie('refresh_token',refreshToken,sameSite: "None"
                            })
                   // other payloads


             res.status(200).send(JSON.stringify(payload))
            }).catch(err => {
                return res.status(401).send(err.message)
            })

和验证端validator.js

if(req.cookies) {
        const idToken = req.cookies.__session;
        const verifiedToken = await admin.auth().verifyIdToken(idToken);
        next();
}

所以问题是;

如何在firebase 云功能中实现csrf中间件? (P.S 我正在使用 firebase 托管 来为我的前端应用程序提供服务。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)