当前位置: 首页 > 知识库问答 >
问题:

MERN堆栈中的CSRF实现

景安翔
2023-03-14

下面是我MERN项目的文件结构。

|-Project
  |- client
  |- server

客户端文件夹包含反应服务器。客户端在<code>localhost.Client上运行。comServer文件夹包含节点的代码。js服务器。服务器运行于localhost.Server.com

每当我从客户端向服务器发出请求时。如何缓解 csrf 攻击?确保向服务器发出的请求来自客户端,而不是来自任何其他源。

共有1个答案

党星鹏
2023-03-14

您的问题可能会在React前端和REST API、CSRF中讨论。

有一篇关于CSRF和反措施的优秀文章(考虑到Angular,但它仍然是一个问题)。TL/DR:

  • 在需要时使用同源策略或设置Access-Control-Allo-Origin-头
  • XSRF-Token保存为安全cookie(不幸的是,这需要exta请求-大多数时候)。只有您域中的代码才能访问此值。
  • 将该令牌作为X-XSRF-TOKEN标头值与您的请求一起发送以授权请求

要确保只有您的应用程序可以使用服务器api,您可以在CORS/OPTIONS响应标头中设置Access-Control-Allo-Origin值。

在开发过程中,它通常设置为
访问控制允许来源:*

对于生产,请指定域/服务器名称
访问控制允许来源:localhost.client.com

为了防止欺骗来源,您可以使用(Anti-)CSRF-Tokens。这是附加到您的请求的额外值,用于验证您的请求。此值可以/应该保存在安全cookie中。crunf或JSON Web令牌可能与您相关。在您的情况下,CSRF-Tokens可能需要对api的额外请求来查询令牌。

 类似资料:
  • 如何在MongoDB中保存多个段落我有一个文本区域,允许输入多个段落,但不在数据库中保存行空间 例如,我希望提交的数据如下所示 我的同僚们都是精英。我的同僚们都是精英。Nobis,sequi?洛雷姆·伊普苏姆·多洛。 我的同僚们都是精英。我的同僚们都是精英。Nobis,sequi? 我的同僚们都是精英。我的同僚们都是精英。Nobis,sequi?同侧阴唇 但它是这样节省的 Lorem ipsum

  • 我正在尝试从数据库中提取数据。我从回应中得到的都是这样的: 我需要帮助如何在前端和后端提出请求: 以下是ReactJS方面: 以下是请求的服务器端: 以下是ProductService: 附注:产品在MongoDB Compass中创建时没有错误:

  • 我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?

  • 我正在按照本指南部署MERN stack app,使用heroku和github页面-https://github.com/juliojgarciaperez/deploy-mern Q1.我是否需要创建两个不同的存储库,一个用于后端,一个用于前端来连接到Heroku?(T.EX后端存储库到heroku管道)我最初在同一个存储库下开发了后端和前端。 Q2.我设法获得了指南中的步骤:3,并按照前面提

  • 我正在学习MERN stack,我已经完成了这个项目,但是我有用户数据的问题。当用户创建帐户时,他们可以在通过身份验证时添加项目。问题是这些相同的项目出现在另一个用户的仪表板上。我希望用户只看到他们添加的项目。

  • 我正在尝试将Google Maps添加到我的MERN Stack应用程序中。根据一些消息来源,我发现在create-react-app中添加.env文件并不能解决隐藏API_Keys(https://create-react-app.dev/docs/adding-custom-environment-variables/)的目的。如何将API_KEYS存储在后端(node.js)中并从React