📜  在 Django 项目中添加 CSP 标头(1)

📅  最后修改于: 2023-12-03 15:23:08.447000             🧑  作者: Mango

在 Django 项目中添加 CSP 标头

什么是 CSP?

CSP,即内容安全策略(Content Security Policy),是一种可以帮助防止跨站脚本攻击(XSS)和数据注入攻击等的安全策略。它的工作原理是允许网站所有者通过定义规则集来限制页面上允许执行的 JavaScript、CSS 和其他资源。这些规则是在 HTTP 标头中指定的。大多数现代浏览器都支持这种策略。

为什么要使用 CSP?

CSP 的主要目的是保护您的网站不受攻击。XSS 攻击是一种流行的攻击方式,攻击者可以利用漏洞注入恶意代码来窃取用户的机密信息,导致数据泄露和其他安全问题。CSP 可以帮助减少这些攻击的成功率。

在 Django 项目中添加 CSP 标头

在 Django 项目中,添加 CSP 标头非常简单。首先,需要安装 django-csp 库:

pip install django-csp

然后,在 settings.py 文件中添加 CSP_MIDDLEWARE,如下所示:

MIDDLEWARE = [
    ...
    'csp.middleware.CSPMiddleware',
    ...
]

CSP_MIDDLEWARE = [
    'csp.middleware.CSPMiddleware',
]

CSP_DEFAULT_SRC = ("'self'",)

可以根据自己的需要更改 CSP_DEFAULT_SRC 的指令,该指令规定了允许加载哪些资源。

示例 CSP 规则

示例 CSP 规则如下:

CSP_DEFAULT_SRC = ("'self'",)
CSP_SCRIPT_SRC = ("'self'", "https://*.googleapis.com", "https://*.gstatic.com")
CSP_STYLE_SRC = ("'self'", "'unsafe-inline'", "https://*.googleapis.com")
CSP_FONT_SRC = ("'self'", "https://*.googleapis.com", "https://*.gstatic.com")
CSP_IMG_SRC = ("'self'", "https://*.googleapis.com", "https://*.gstatic.com")
CSP_CONNECT_SRC = ("'self'",)

这些规则允许从当前域加载所有的默认资源,以及从谷歌 API 和谷歌静态资源库加载脚本、样式表、字体和图像,以及连接到当前域的源。

结论

CSP 可以帮助保护您的 Django 项目免受 XSS 和数据注入等攻击。使用 django-csp 库可以使添加 CSP 标头变得更加容易。通过定义适当的规则,可以控制您的页面的加载行为,从而加强安全性。