这是一个名为secure.py
的 Python 库,用于为 Python Web 应用程序添加安全头,保护应用程序免受常见漏洞的攻击。它支持多种 Python Web 框架,具有以下特点:
- 介绍:在当今的 Web 环境中,安全至关重要。
secure.py
是一个轻量级的 Python 库,旨在轻松地为 Web 应用程序添加安全头。它提供了统一的 API,可与 Django、Flask、FastAPI 等流行框架一起使用,增强应用程序的安全态势。 为什么使用 secure.py:
- 应用必要的安全头,如 CSP、HSTS 等,无需太多努力。
- 不同框架的统一 API。
- 可自定义的安全默认值,开箱即安全,可根据需要进行定制。
- 易于集成,与 Python 最常用的框架兼容。
- 现代 Pythonic 设计,利用 Python 3.10+ 的特性,使代码更清晰、更高效。
- 支持的框架:支持多种 Python Web 框架,包括 aiohttp、Bottle、CherryPy、Django、Falcon、FastAPI、Flask、Masonite、Morepath、Pyramid、Quart、Responder、Sanic、Starlette、Tornado 和 TurboGears,并提供了相应的集成指南。
功能:
- 安全头:自动应用诸如
Strict-Transport-Security
、X-Frame-Options
等头。 - 可自定义策略:使用方法链接灵活构建自己的安全策略。
- 框架集成:与各种框架兼容,确保跨兼容性。
- 无外部依赖:轻量级,易于在任何项目中包含。
- 易于使用:只需几行代码即可集成安全头。
- 异步支持:对 FastAPI 和 Starlette 等现代框架的异步支持。
- 增强的类型提示:完整的类型注释,提供更好的开发体验。
- 归因于可信来源:实施 MDN 和 OWASP 的建议。
- 安全头:自动应用诸如
要求:
- Python 3.10 或更高版本,利用 Python 3.10 和 3.11 中的现代特性,如联合类型运算符、结构模式匹配、改进的类型提示和注释、
cached_property
等。如果使用较旧版本的 Python(3.6 到 3.9),请使用 0.3.0 版本的库。 - 无外部依赖,仅依赖 Python 标准库。
- Python 3.10 或更高版本,利用 Python 3.10 和 3.11 中的现代特性,如联合类型运算符、结构模式匹配、改进的类型提示和注释、
- 安装:可以使用 pip、pipenv 或 poetry 进行安装。
入门:
- 同步使用:导入
secure
库,初始化安全头并将其应用于框架响应对象。 - 异步使用:对于支持异步操作的框架,如 FastAPI 和 Starlette,使用异步方法。
- 示例用法:创建
Secure
实例并将默认安全头应用于响应对象。
- 同步使用:导入
- 默认安全头:默认情况下,
with_default_headers()
应用以下头:Cache-Control: no-store
、Cross-Origin-Opener-Policy: same-origin
、Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'
、Strict-Transport-Security: max-age=31536000
、Permissions-Policy: geolocation=(), microphone=(), camera=()
、Referrer-Policy: strict-origin-when-cross-origin
、Server:
、X-Content-Type-Options: nosniff
。 - 策略生成器:可以轻松自定义
Content-Security-Policy
和Permissions-Policy
等头。 框架示例:
- FastAPI:在 FastAPI 应用中使用中间件添加安全头。
- Flask:在 Flask 应用中使用
after_request
装饰器添加安全头。
- 文档:有关更多详细信息,包括高级配置和集成示例,请访问完整文档。
- 归因:该库实现了来自可信来源的安全建议,如 MDN Web Docs 和 OWASP Secure Headers Project,并在源代码中适当添加了归因注释。
- 资源:提供了与安全相关的资源链接,如 OWASP - Secure Headers Project、Mozilla Web Security Guidelines、MDN Web Docs: Security Headers、web.dev: Security Best Practices 和 The World Wide Web Consortium (W3C)。
- 许可证:项目根据MIT 许可证授权。
- 贡献:欢迎贡献,可在GitHub上打开问题或提交拉取请求。
- 变更日志:有关详细的更改列表,请参考CHANGELOG。
- 致谢:感谢 MDN Web Docs 和 OWASP Secure Headers Project 的贡献者提供的宝贵资源和指南,使网络更安全。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。