React + Django 的最佳安全实践

Posted

技术标签:

【中文标题】React + Django 的最佳安全实践【英文标题】:Best security practices for React + Django 【发布时间】:2018-06-27 13:05:26 【问题描述】:

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

我的问题如下:

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

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

【问题讨论】:

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

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

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

【讨论】:

以上是关于React + Django 的最佳安全实践的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL - 最佳实践 - 使用SSL加密连接

52合1Node.js 最佳实践大合集

21条最佳实践,全面保障 GitHub 使用安全

JSON 安全最佳实践?

PostgreSQL安全最佳实践

开发安全规约(三)——XML最佳安全实践