Я пытался настроить защиту CSRF с помощью lusca в моем приложении Express. js. Не выглядит это так:
this.app.use(lusca({
csrf: {
cookie: {name: '_csrf'}
},
hsts: { maxAge: 31536000, includeSubDomains: true, preload: true },
nosniff: true,
referrerPolicy: "same-origin",
xframe: "SAMEORIGIN",
xssProtection: true,
}));
А на стороне клиента:
const res = await axios.post(`${Constants.apiUrl()}/${Constants.paths.login}`,
credentials, {
withCredentials: true,
xsrfCookieName: '_csrf'
});
На стороне сервера я также установил некоторые заголовки, чтобы иметь возможность отправлять куки с запросом - res.header('Access-Control-Allow-Credentials', 'true')
.
Возможно, мне не хватает какой-то важной части того, как работает защита CSRF. Теперь каждый раз с ответом я получаю новый csrf token
, но это означает, что мой новый запрос HTTP POST отправляет предыдущий токен, который уже устарел. Чего мне не хватает?