2013-01-23 7 views
15

In un ambiente di produzione, perché sento persone dire che lasciare DEBUG = True è potenzialmente pericoloso?DEBUG = True Django

Qual è un esempio in cui qualcuno potrebbe sfruttare questo problema di sicurezza per eseguire un'attività dannosa sul mio server?

+0

si dovrebbe accettare il diritto ans. – shuboy2014

+0

Devi accettare la risposta di @ PraveenGollakota –

risposta

11

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

"Mai distribuire un sito in produzione con DEBUG acceso.

Avete capito? MAI distribuire un sito in produzione con DEBUG acceso.

Una delle caratteristiche principali della modalità di debug è la visualizzazione di pagine di errore dettagliate.Se la tua app solleva un'eccezione quando DEBUG è True, Django visualizzerà un traceback dettagliato, inclusi molti metadati relativi al tuo ambiente, come tutte le impostazioni Django attualmente definite (dalle impostazioni. py)."

Fondamentalmente, è un buco di sicurezza spalancato.

Spreca anche un sacco di memoria:.

"E 'anche importante ricordare che quando si esegue con DEBUG attivato, Django si ricorderà ogni query SQL esegue Questo è utile quando si è il debug, ma consumerà rapidamente memoria su un server di produzione. "

+0

Quindi cosa dobbiamo assegnare ** DEBUG ** in produzione? – shuboy2014

+0

@ shuboy2014 'DEBUG = False' per l'ambiente di produzione –

+0

Questo non sembra rispondere alla domanda. L'OP sembra sapere di non abilitare DEBUG in produzione; ha chiesto ** un esempio ** in cui qualcuno potrebbe sfruttare il problema di sicurezza per eseguire un'operazione dannosa sul server. Ribadire di "non farlo mai" è molto simile a quell'episodio di Guy Guy in cui Quagmire dice che non si sarebbe fidanzato con una ragazza chiamata e Joe dice "Bene. Non farlo", e poi Quagmire è come "I già sai di non farlo, non devi dirmi di non ", a cui Joe risponde:" Bene, non farlo ". –

6

Django fa del suo meglio per offuscare informazioni sicure nella tua pagina di debug, ma non è perfetto.

Per impostazione predefinita, tutte le impostazioni che includono KEY (avvio di Django 1.4), SECRET ecc. Vengono sostituite automaticamente con *. Tuttavia, se qualcuno decide di diventare creativo e chiama SECRET come SECURE_STR o qualsiasi altra cosa, verrà visualizzato come testo normale! Lo vorresti? Inoltre è solo più foraggio per qualcuno di hackerare facilmente nel tuo server.

+0

Impressionante esempio di come potrebbero essere trapelate informazioni segrete. –

Problemi correlati