React + Django的最佳安全实践

时间:2018-01-18 12:41:08

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

我目前正在开发一个使用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)?

1 个答案:

答案 0 :(得分:0)

  1. 是的,如果允许CORS用于正确的原始域,则在生产中使用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。