我正在开发一个Django项目,我接管了其他仅在内部使用的项目。它未部署到网站,只能在本地网络上访问。之前的开发人员在settings.py中留下了DEBUG = True。 Django文档非常强调在网站投入生产时保留DEBUG = True是不好的。没有在本地网络上的任何人都无法访问该网站,甚至只有5人定期查看。除了安全原因,在DEBUG模式下永久运行还有其他任何缺点吗?
答案 0 :(得分:3)
调试模式可能会泄漏一些内存。此外,生产系统(无论多么小)通过电子邮件向管理员发送完整的错误消息和堆栈跟踪(Django在DEBUG = False时默认执行)比在浏览器上显示它更好。通过这种方式,管理员确切地知道发生了什么,而不是试图用来自用户的模糊信息来重现它("我点击这里然后我想我点击了那里然后有这个消息")。您需要正确设置ADMINS
和EMAIL_*
设置。
答案 1 :(得分:1)
Django文档警告永远不要部署调试:
切勿在启用DEBUG的情况下将网站部署到生产环境中。
你抓到了吗?切勿在启用DEBUG的情况下将站点部署到生产环境中。
后来,他们给出了一个与安全无关的理由:
同样重要的是要记住,当打开DEBUG运行时,Django会记住它执行的每个SQL查询。这在您进行调试时非常有用,但它会快速占用生产服务器上的内存。
答案 2 :(得分:1)
“内部”是一个相对术语。内部网络上的人员或机器仍然可以被视为攻击者。