【问题标题】:Best security practices for React + DjangoReact + Django 的最佳安全实践
【发布时间】:2023-03-14 19:22:02
【问题描述】:

我目前正在开发一个使用 Django API 服务器和运行 React 的 NodeJS 服务器的项目。在开发中,我们在 8000 端口上运行 Django,在 8080 端口上运行 NodeJS,目前 React 负责渲染页面并与 Django API 交互,后者为 React 提供数据。为了让 React 调用 Django API,我们在 Django 中启用了 CORS,因为它们位于不同的端口上。

我的问题如下:

  1. 在生产环境中允许所有 CORS 是否安全?

  2. 如果不使用 Django 的模板系统,默认情况下站点是否仍然受到 CSRF 保护?如果没有,在这样的设置中如何防止 CSRF(React+Django)?

【问题讨论】:

  • API 如何对用户进行身份验证?这是 CSRF 的一个关键问题。 IE。 cookie 中是否有 Bearer 令牌或会话 ID 或其他内容?

标签: django reactjs security django-rest-framework django-cors-headers


【解决方案1】:
  1. 是的,如果您允许在正确的源域中使用 CORS,那么在生产中使用它是安全的。例如,如果您使用 django-cors-headers,请使用 CORS_ORIGIN_ALLOW_ALL=False 和一组域作为 CORS_ORIGIN_WHITELIST

  2. 正如answers to this question 解释的那样,如果使用SessionAuthentication,DRF 将使用CSRF 令牌。但是,如果您使用其他身份验证机制(例如,令牌身份验证或 JWT),您也会受到客户端浏览器的保护,不允许来自不受信任来源的不安全请求,即不在您的 CORS_ORIGIN_WHITELIST 中。有关 CORS 与 CSRF 令牌的安全性,请参阅 answers to this question,以防止 CSRF。

【讨论】:

    猜你喜欢
    • 2011-02-10
    • 2010-09-28
    • 1970-01-01
    • 2011-01-26
    • 2013-06-19
    • 2014-01-17
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多