django - 如何检查 Django 安全漏洞以及如何修复它们
问题描述
首先我使用 Django 2.1 + Python 3.6
我不得不承认 Django 是一个框架,它使开发人员的生活变得更加轻松,即使它是相对的。
现在我们已经编写了一个 Django 项目,完成了测试,部署了它的 web 应用程序;
问题:
Django 没有特别涵盖的安全点有哪些?
我们可以有一个与使用 Django 编写的网站相关的漏洞清单吗?
确保用 Django 编写的应用程序稳定性的重要安全测试有哪些?
解决方案
使用Mozilla站点的 Observatory 扫描您站点的安全状态。该站点还包括第三方扫描程序,用于测试您站点的其他安全方面。
以下是给定站点的扫描结果示例:
获得的最佳成绩是 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'",)
或者,您可以安装django-referrer-policy来设置 Referrer-Policy 标头以增加安全性(和更高等级!)。
我自己也是初学者,以上所有内容都是基于我的研究以及我为提高网站安全性所做的工作。
推荐阅读
- python - BeautifulSoup - 从开始关键字刮到结束关键字的文本
- asp.net-core - 如何从非默认版本文档中排除默认 API 路由版本
- sql - 如何检查oracle sql中是否存在外键约束
- python - 使用 selenium python 上传文件
- r - R:For循环仅在手动执行时有效
- java - 反向链表的递归程序
- django - 我在 Elastic Beanstalk for AL2 中的环境变量在哪里?
- php - 计算 WooCommerce 中所有订单商品的完整数量
- javascript - 为什么我的机器人总是崩溃(无法读取未定义的属性“发送”)
- twilio - Twilio Call 在响铃后断开