在生产环境中,为什么有人说保持 DEBUG = True 可能存在潜在的危险?
有哪些可能会利用这个安全问题在我的服务器上执行恶意任务的例子?
有哪些可能会利用这个安全问题在我的服务器上执行恶意任务的例子?
https://docs.djangoproject.com/en/dev/ref/settings/#debug
"绝不能在 DEBUG 开启的情况下将网站部署到生产环境中。
你听到了吗?绝不能在 DEBUG 开启的情况下将网站部署到生产环境中。
调试模式的主要特性之一是显示详细的错误页面。如果你的应用在 DEBUG 为 True 的情况下引发异常,Django 将显示详细的回溯信息,包括关于你的环境的大量元数据,例如从 settings.py 中定义的所有当前 Django 设置。"
基本上,这是一个巨大的安全漏洞。
它还会浪费大量内存:
"记住,在开启 DEBUG 模式时,Django 还会记住它执行的每个 SQL 查询。这在调试时很有用,但在生产服务器上会迅速消耗内存。"
Django尽最大努力在调试页面中混淆安全信息,但并非完美。
默认情况下,任何包含KEY(自Django 1.4开始)、SECRET等的设置都会自动替换为*。然而,如果有人决定将SECRET称为SECURE_STR或其他任何名称,则该信息将显示为纯文本!您希望这样吗?此外,这只会更方便地让某些人轻松地入侵您的服务器。