【问题标题】:CSRF implementation in a MERN stackMERN 堆栈中的 CSRF 实现
【发布时间】:2020-07-19 11:45:43
【问题描述】:

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

|-Project
  |- client
  |- server

Client 文件夹包含一个反应服务器。 客户端运行在localhost.client.com 服务器文件夹包含 node.js 服务器的代码。 服务器运行在localhost.server.com

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

【问题讨论】:

    标签: node.js csrf reactjs


    【解决方案1】:

    React frontend and REST API, CSRF 可能涵盖您的问题。

    有一篇关于CSRF and counter measures 的优秀文章(考虑到 Angular,但仍然是同样的问题)。 TL/DR:

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

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

    在开发过程中通常设置为
    Access-Control-Allow-Origin: *

    对于生产,您指定您的域/服务器名称
    Access-Control-Allow-Origin: localhost.client.com

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 2022-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2022-07-14
    • 2021-02-24
    • 2020-03-20
    相关资源
    最近更新 更多