实用工具和“linter”,帮助您使Django站点更加安全。
项目描述
帮助您记住做那些愚蠢的小事情来提高Django站点的安全性。
受Mozilla的安全编码指南的启发,并适用于完全或主要通过SSL提供服务的站点(应包括任何带有用户登录的站点)。
快速入门
依赖关系
与Django 1.4通过trunk和Python 2.6、2.7、3.2和3.3进行测试。很可能与两者的旧版本也兼容;它并不复杂。
安装
使用pip从PyPI安装
pip install django-secure
或获取开发版本
pip install django-secure==dev
用法
将"djangosecure"添加到您的INSTALLED_APPS设置。
将"djangosecure.middleware.SecurityMiddleware"添加到您的MIDDLEWARE_CLASSES设置(位置取决于您的其他中间件,但列表的开头可能是一个不错的选择)。
将SECURE_SSL_REDIRECT设置设置为True,如果应将所有非SSL请求永久重定向到SSL。
将 SECURE_HSTS_SECONDS 设置为一个整数秒数,并将 SECURE_HSTS_INCLUDE_SUBDOMAINS 设置为 True,如果您想使用 HTTP 严格传输安全。
将 SECURE_FRAME_DENY 设置为 True,如果您想防止您的页面被框架化,并保护它们免受 点击劫持。
将 SECURE_CONTENT_TYPE_NOSNIFF 设置为 True,如果您想防止浏览器猜测资源内容类型。
将 SECURE_BROWSER_XSS_FILTER 设置为 True,如果您想启用浏览器的 XSS 过滤保护。
如果您正在使用 django.contrib.sessions,请将 SESSION_COOKIE_SECURE 和 SESSION_COOKIE_HTTPONLY 设置为 True。这些设置不是 django-secure 的一部分,但如果运行的是安全站点,则应该使用这些设置,并且 checksecure 管理命令将检查它们的值。
请确保您使用的是一个长、随机且唯一的 SECRET_KEY。
运行 python manage.py checksecure 以验证您的设置是否已正确配置以提供安全的 SSL 站点。
文档
有关更多详细信息,请参阅 完整文档。
变更记录
1.0.2 (2020.03.31)
此项目已合并到 Django 1.8,其功能现在是 Django 核心的一部分。因此,它不再维护,您不应使用它。
1.0.1 (2014.10.23)
将 django-secure 测试从 pre-1.6 Django 测试运行器中隐藏,以避免破坏项目测试。
1.0 (2013.04.17)
向后不兼容:已删除对 Python 2.5、Django 1.2 和 Django 1.3 的测试支持。
添加了对 Python 3 的支持和测试(尽管所有非测试代码在先前都已在 Python 3 下正常工作。)
0.1.3 (2013.04.17)
添加了对 SECRET_KEY 的检查。感谢 Ram Rachum。
0.1.2 (2012.04.13)
添加了 SECURE_HSTS_INCLUDE_SUBDOMAINS 设置。感谢 Paul McMillan 的报告和 Donald Stufft 的补丁。修复了 #13。
添加了 X-XSS-Protection: 1; mode=block 标头。感谢 Johannas Heller。
0.1.1 (2011.11.23)
添加了 X-Content-Type-Options: nosniff 标头。感谢 Johannas Heller。
SECURE_PROXY_SSL_HEADER 设置现在修补 request.is_secure() 以尊重代理 SSL,以避免将应重定向到 https 的请求重定向到 http。
0.1.0 (2011.05.29)
初始版本。