在生产环境中,为什么我听到有人说离开DEBUG = True有潜在的危险?
有人可能利用此安全问题在我的服务器上执行恶意任务的一个示例是什么?
答案 0 :(得分:17)
https://docs.djangoproject.com/en/dev/ref/settings/#debug
“切勿在启用DEBUG的情况下将网站部署到生产环境中。
你抓到了吗?切勿在启用DEBUG的情况下将站点部署到生产环境中。调试模式的一个主要功能是显示详细的错误页面。如果您的应用在DEBUG为True时引发异常,Django将显示详细的回溯,包括大量有关您环境的元数据,例如所有当前定义的Django设置(来自settings.py)。“
基本上,这是一个巨大的安全漏洞。
这也浪费了很多记忆:
“同样重要的是要记住,当打开DEBUG运行时,Django会记住它执行的每个SQL查询。这在你调试时很有用,但它会快速消耗生产服务器上的内存。” / p>
答案 1 :(得分:15)
Django尽力在调试页面中混淆安全信息,但这并不完美。
默认情况下,任何包含KEY(启动Django 1.4),SECRET等的设置都会自动替换为 * 。但是,如果有人决定发挥创意并将SECRET称为SECURE_STR或其他,那么它将显示为纯文本!你想要吗?此外,对于有人轻易入侵您的服务器而言,这只是更多的素材。