问题描述
我想在我的 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 (将#修改为@)