gee*_*wiz 6 python django logging environment-variables
Django内置的错误电子邮件管理员功能(请参阅https://docs.djangoproject.com/en/dev/howto/error-reporting/)非常方便.
但是,这些回溯电子邮件包含完整的环境变量转储.
并且正如django docs和其他地方所建议的那样(例如https://docs.djangoproject.com/en/dev/howto/deployment/checklist/)我将一些秘密/密钥/密码移动到环境变量中作为一种简单的方法让他们远离代码库并在部署中改变它们.不幸的是,这意味着当有崩溃报告时,这些秘密会以明确的方式发送到一组电子邮件帐户.不是一个好习惯.
django ExceptionReporter具有基本过滤功能,可以提取"危险或令人反感"的设置,例如,settings.py中名称中包含字符串"pass"或"key"的任何项的值将替换为****s.因此,settings.py中的密钥被删除.但是此过滤器不适用于环境变量,这些变量出现在这些错误报告的Traceback-> Local vars-> request和Request Information-> Meta部分中.
显然,还有其他方法可以管理机密,但unix环境对于小型站点来说是一种非常常见的解决方案,在这种情况下,不保证创建更复杂的配置系统.
在基本的django文档中推荐的这两种实践在一起应用时也是不安全的,这似乎也是有问题的.
通过电子邮件发送站点调试信息总是存在泄漏信息的风险,但这似乎是一个重要的遗漏,可以通过扩展过滤来解决,可能由某些设置控制.
有没有人已经修补了这个(大概是扩展了django/views/debug.py中的过滤)以进行部署和/或向django团队提交补丁?或者我错过了其他一些明显的方法来解决这个问题?
好的,在我之前的检查中错过了这一点,但显然 django 团队大约在 6 年前记录了这个错误并将其关闭为无法修复:
https://code.djangoproject.com/ticket/7472
我会和他们一起讨论这个问题,因为我相信 django 在这段时间里已经在安全方面取得了实质性进展,现在可能想要并且有一些简单的方法来解决这个问题。:)
同时,如果您使用此向管理员发送电子邮件的功能,请注意其中的风险。如果您发送这些电子邮件,那么我强烈建议您将所有秘密/密码/密钥/证书/等保留或放置在 python 配置文件中,并确保您正在清理传递给 django Web 服务的 (unix) 环境。
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |