React + Django的最佳安全实践方法

3
我目前正在开发一个项目,使用Django API服务器和运行React的NodeJS服务器。在开发中,我们将Django运行在8000端口上,将NodeJS运行在8080端口上,目前React负责呈现页面并与提供React数据的Django API进行交互。为了使React调用Django API,我们在Django中启用了CORS,因为它们位于不同的端口上。
我的问题如下:
  1. 在生产环境中允许所有CORS是否安全?
  2. 如果不使用Django的模板系统,该网站是否仍然默认受到CSRF的保护?如果不是,请问如何在这种设置(React+Django)中防止CSRF?

API如何对用户进行身份验证?这是与CSRF相关的关键问题。即,是否存在Bearer令牌、cookie中的会话ID或其他内容? - Gabor Lengyel
1个回答

2
  1. 如果你允许正确来源的域名,使用CORS在生产环境中是安全的。例如,如果你使用django-cors-headers,请将CORS_ORIGIN_ALLOW_ALL设置为False,并设置一组域名作为CORS_ORIGIN_WHITELIST

  2. 正如这个问题的回答所解释的那样,如果使用SessionAuthentication,DRF会使用CSRF令牌。但是,如果你使用其他身份验证机制(例如令牌身份验证或JWT),客户端浏览器也会受到保护,不允许来自不受信任来源的不安全请求,即不在你的CORS_ORIGIN_WHITELIST中。有关CORS与CSRF令牌在一般情况下防止CSRF的安全性,请参见这个问题的回答


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接