2013-01-23 10 views
15

In einer Produktionsumgebung, warum höre ich Leute sagen, dass DEBUG = True ist möglicherweise gefährlich?DEBUG = True Django

In welchem ​​Beispiel könnte jemand dieses Sicherheitsproblem ausnutzen, um eine bösartige Aufgabe auf meinem Server auszuführen?

+0

sollten Sie die richtige ans akzeptieren. – shuboy2014

+0

Sie sollten @ PraveenGollakotas Antwort akzeptieren –

Antwort

11

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

„Noch nie eine Website in die Produktion bereitstellen mit DEBUG eingeschaltet.

Wussten Sie, dass zu fangen? NIE eine Website in die Produktion bereitstellen mit DEBUG eingeschaltet.

Eines der wichtigsten Merkmale Im Debug-Modus werden detaillierte Fehlerseiten angezeigt.Wenn Ihre App eine Ausnahme auslöst, wenn DEBUG True ist, zeigt Django eine detaillierte Rückverfolgung an, die viele Metadaten über Ihre Umgebung enthält, wie zB alle aktuell definierten Django-Einstellungen (von den Einstellungen). py). "

Grundsätzlich ist es eine klaffende Sicherheitslücke.

Es ist auch viel Speicher verschwendet.

„Es ist auch wichtig, daran zu erinnern, dass, wenn sie mit DEBUG läuft eingeschaltet, wird Django jede SQL-Abfrage erinnern sie ausgeführt Dies ist nützlich, wenn Sie das Debuggen, aber Es wird schnell Speicher auf einem Produktionsserver verbrauchen. "

+0

Also was müssen wir ** DEBUG ** in der Produktion zuweisen? – shuboy2014

+0

@ shuboy2014 'DEBUG = False' für die Produktionsumgebung –

+0

Dies schien die Frage nicht zu beantworten. Das OP scheint zu wissen, dass DEBUG nicht in Produktion gehen darf; Er bat um ** ein Beispiel **, wo jemand das Sicherheitsproblem ausnutzen könnte, um eine bösartige Aufgabe auf dem Server auszuführen. Es ist sehr ähnlich wie in der Family Guy-Episode, in der Quagmire sagt, dass er sich nicht mit einem Callgirl verbinden würde und Joe sagt "Gut, mach nicht.", Und dann ist Quagmire wie "Ich weiß schon, das nicht zu tun, du musst mir das nicht sagen ", worauf Joe antwortet:" Gut, nicht ". –

6

Django versucht sein Bestes, um sichere Informationen in Ihrer Debug-Seite zu verschleiern, aber es ist nicht perfekt.

Standardmäßig werden alle Einstellungen, die KEY (Django 1.4 starten), SECRET usw. enthalten, automatisch durch * ersetzt. Wenn jemand jedoch beschließt, kreativ zu werden und SECRET als SECURE_STR oder was auch immer zu nennen, wird das als Klartext angezeigt! Würdest du das wollen? Es ist auch mehr Futter für jemanden, der sich leicht in Ihren Server hackt.

+0

Fantastisches Beispiel dafür, wie geheime Informationen durchsickern könnten. –

Verwandte Themen