2013-01-23 66 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

祕密信息可能泄露的真實例子。 –

相關問題