首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在redux store中添加CSRF令牌是一种好的做法吗?

在redux store中添加CSRF令牌是一种好的做法吗?
EN

Stack Overflow用户
提问于 2021-06-02 17:24:55
回答 1查看 167关注 0票数 0

将CSRF令牌存储在redux中是一种好的做法吗?我之前用道具传递过它(将它添加到Axios头文件中)。我有一个rails后端,我使用的是gem react-rails,我的组件是服务器渲染的,所以我没有想出任何其他的方法来做到这一点,而是将CSRF令牌传递给组件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-03 01:53:54

将令牌存储在Redux存储中是很好的。

令牌的目的是防止其他站点/源向您的API发出非GET (POST,PUT,DELETE)请求。如果没有它,恶意站点可能会发出请求,并利用存储在您的浏览器中的cookie和会话。在纯HTML服务器呈现的Rails应用程序中,该令牌直接放入HTML中,使其可用于该页面上的任何JavaScript。因此,对于您控制的页面上的任何代码,它都不是私有信息。

尽管如此,考虑到它是全球性的,并且您可能需要在Redux的上下文之外使用它,最好将它放在window上供任何人使用:

代码语言:javascript
运行
复制
window.CSRF_TOKEN = document.querySelector("meta[name='csrf-token']").getAttribute("content")

任何时候调用fetch时,都可以包含以下标头:

代码语言:javascript
运行
复制
headers: {
 'X-CSRF-Token': window.CSRF_TOKEN
}

由于您使用的是react-rails,因此也可以将其作为道具传递给您的组件:

代码语言:javascript
运行
复制
react_component 'MyForm', authenticity_token: form_authenticity_token

如果您不依赖Rails会话进行身份验证(例如,使用持有者令牌),则还可以在ApplicationController中使用以下行完全禁用CSRF令牌

代码语言:javascript
运行
复制
protect_from_forgery with: :null_session
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67802407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档