django - React + Django 的最佳安全实践

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

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

我的问题如下:

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

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

最佳答案

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

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

关于django - React + Django 的最佳安全实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321631/

相关文章:

javascript - 使用 django 将 STATIC_URL 传递给文件 javascript

javascript - React - 如何映射嵌套对象值?

javascript - 尚未执行的代码会影响其上方的上下文

security - 可以嗅探一个人的发布请求数据吗?

python - Django csv 导出

python - Django 表单不显示

javascript - 如何从 Bootstrap 的模态形式发布数据?

javascript - React JS如何显示数组内包含数组的JSON

java - "Java 1.7 TLS 1.2 server"和 "Java 1.6 client"之间的 SSL/TLS 握手

linux - 在 Linux 中,可执行文件的位置是否会影响 setuid 位的解释方式?