2013-01-23 67 views
15

在生产环境中,为什么我听到有人说离开DEBUG = True会有潜在危险?DEBUG = True Django

什么是某人可能利用此安全问题在我的服务器上执行恶意任务的示例?用DEBUG打开

+0

你应该接受正确的答案。 – shuboy2014

+0

您应该接受@ PraveenGollakota的回答 –

回答

11

https://docs.djangoproject.com/en/dev/ref/settings/#debug

“从来没有部署一个站点投入生产。

你明白了吗?从来没有部署一个站点投入生产DEBUG打开。

的一个主要特点如果您的应用在DEBUG为True时引发异常,Django将显示详细的回溯信息,包括大量关于您的环境的元数据,例如所有当前定义的Django设置(来自设置)。 PY)“。

基本上,这是一个巨大的安全漏洞。

这也浪费了大量的内存:

“同样重要的是要记住,使用调试运行时开启,Django会记住它每次执行SQL查询,当您正在调试这是有用的,但它会迅速消耗生产服务器上的内存。“

+0

那么我们需要在生产中分配** DEBUG **吗? – shuboy2014

+0

@ shuboy2014'DEBUG = False' for production environment –

+0

这似乎没有回答这个问题。 OP似乎不知道在生产中启用DEBUG;他要求**一个例子**,其中有人可能利用安全问题在服务器上执行恶意任务。重申“永远不要这样做”就像在那个家庭人的情节里,夸格米尔说他不会和一个应召女郎联系起来,而乔说“好,不要......”,然后克格米尔像“我已经知道不要这样做,你不必告诉我不要这样做,“乔回答说:”好,不要“。 –

6

Django尽力在您的调试页面中混淆安全信息,但这并不完美。

默认情况下,包含KEY(启动Django 1.4),SECRET等的任何设置都会自动替换为*。但是,如果有人决定创造性地将SECRET作为SECURE_STR或其他方式调用,那么它将显示为纯文本!你想要吗?此外,它只是更容易让某人轻松入侵您的服务器。

+0

秘密信息可能泄露的真实例子。 –

相关问题