axios - 使用 NUXT、Axios、NEST 和 CSURF 进行 CSRF 保护
问题描述
我已经在谷歌上搜索了一段时间,但仍然无法在我的 NestJS 应用程序和我的 Nuxt SSR 前端之间获得有效的 CSURF CSRF 保护。
目前我在我的 Nest main.js 中有这个实现:
app.use(cookieParser());
app.use(csurf({ cookie: true }));
app.use((req, res, next) => {
const token = req.csrfToken();
res.cookie('XSRF-TOKEN', token);
next();
});
我不确定这是正确的方法,但到目前为止我找到了这个解决方案。该token
变量正在更改每个请求。在我的理解req.cookie
中,将此令牌设置为一个名为的 cookie,该 cookieXSRF-TOKEN
应该在我的客户端可用。
在我的 Nuxt 应用程序中,我创建了一个插件:
export default function ({ $axios, $cookies }) {
$axios.onRequest(() => {
const token = $cookies.get('XSRF-TOKEN')
$axios.defaults.headers.common['x-xsrf-token'] = token
})
}
这里有两种行为:
- 这
token
是从 cookie 中获取的,但是一旦发生这种情况,所有请求都将保持不变 - 当然我会invalid csrf token
出错 - 另一种情况是当
token
is时undefined
。
我的问题是如何在这个库之间实现安全的 csrf 保护?
附加信息:
$cookies
来自库cookie-universal-nuxt
库,我还设置withCredentials: true
了 axios 调用:
await this.$axios.patch(`endpoint`, {}, { withCredentials: true })
解决方案
推荐阅读
- jpa - 带有 WIldfly24 的 JPA 设置抛出 NullPointerException
- reactjs - 提交按钮必须重定向到反应 js 中选定的单选按钮页面
- azure - 在 Pyspark 中从列表中迭代地移动多个文件
- node.js - GraphQL:嵌套查询返回错误数据
- c# - C# 修改类属性值
- spring - 如何在@TestFactory 的每个测试中创建不同的 Spring 上下文?
- php - 在phpspreadsheet中完成写入列后如何下一个列?
- json - Angular i18n 和参数
- ruby - Ruby webscraping watir,webdrivers 无法连接到 chromedriver
- android - 在 android studio 中找不到打开的翻译编辑器