1

I want to implement CSRF into my Firebase Functions and because I am using Cookies to send and receive data from to my cloud functions.

As I can understand from here also I can see that __session cookie is only accepted cookie from here. So that, csurf package with implementation of cloud function like;

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();
});

wont work. But I could not find any other option right now.

So my implementation on cloud function side, 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, {
                                httpOnly: true,
                                expires: new Date(Date.now() + 24 * 3600 * 1000),
                                maxAge: 24 * 3600 * 1000,
                                secure: true,
                                sameSite: "None"
                            })
                   // other payloads


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

and validation side validator.js

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

so question is;

how to implement csrf middleware in firebase cloud functions? (P.S I am using firebase hosting to serve my frontend application).

Falzao
  • 23
  • 4

0 Answers0