如何检查Django的安全漏洞以及如何修复这些漏洞

问题描述 投票:5回答:2

之前我都是用Django 2.1+Python 3.6。

我不得不承认,Django是一个让开发者的生活变得更加轻松的框架,即使它是相对的。

现在我们已经写了一个Django项目,做了测试,部署了它的Web应用。

的问题。

  • 哪些安全点是Django没有特别涉及到的?

  • 我们能不能有一个与用Django写的网站相关的漏洞检查表?

  • 为了保证用Django写的app的稳定性,有哪些重要的安全测试?

django python-3.x security django-rest-framework
2个回答
11
投票

使用 观察站 网站来扫描您网站的安全状态。该网站还包括第三方扫描器,用于测试您网站的其他安全方面。

下面是一个给定网站的扫描结果的例子。

Security status grade

最好的成绩是A+(分数甚至可以超过100%),但是如果一个网站的分数是直接的F(失败),不要感到惊讶,即使该网站已经通过了基本的部署检查表。

为了提高你的网站安全性,请确保你在你的 settings.py:

CSRF_COOKIE_SECURE = True
CSRF_COOKIE_SAMESITE = 'Strict'
SESSION_COOKIE_SECURE = True
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_SSL_REDIRECT = True
X_FRAME_OPTIONS = 'DENY'
SECURE_HSTS_SECONDS = 300  # set low, but when site is ready for deployment, set to at least 15768000 (6 months)
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True

然后使用 SRI哈希生成器 以确保你所有的脚本都能安全地从第三方网站加载。

最后,最具挑战性和最耗时的是内容安全策略(CSP)的实施,尤其是当网站规模较大,包含大量第三方代码,并且有很多内联脚本和样式散落在项目中时。为了使任务更简单,你可以安装 Mozilla的django-csp 并使用浏览器的控制台来跟踪你的代码中的安全违规行为。您还需要在您的代码中填写以下设置。settings.py:

CSP_DEFAULT_SRC = ("'none'",)
CSP_STYLE_SRC = ("'self'",)
CSP_SCRIPT_SRC = ("'self'",)
CSP_FONT_SRC = ("'self'",)
CSP_IMG_SRC = ("'self'",)

这个网站有助于解释CSP和如何使用内联脚本。

您可以选择安装 django-referrer-policy(中文) 来设置Referrer-Policy头以增加安全性(和更高等级!)。

我自己也是一个初学者,以上所有的内容都是基于我的研究和我为提高网站安全性所做的工作。


9
投票

你可以进行的安全检查之一是 部署清单

运转

manage.py check --deploy

其他安全检查可参考 正式文件

© www.soinside.com 2019 - 2024. All rights reserved.