Ich versuche, vertrauliche Informationen mit Djangos @sensitive_post_parameters
herauszufiltern. Ich dachte, diese Annotationen über die wenigen spezifischen Funktionen voranzustellen wäre genug, aber es funktioniert nicht. Ich habe Breakpoint innerhalb SafeExceptionReporterFilter
gesetzt und es bricht nur, wenn von den anderen Handlern AdminEmailHandler
und nicht genannt wird. Was vermisse ich ?Ist es möglich, Djangos SafeExceptionReporterFilter mit etwas anderem als dem AdminEmailHandler zu verwenden?
Antwort
Auch wenn Sie die SafeExceptionReporterFilter
verwenden, enthalten Ausnahmen weiterhin vertrauliche Daten (z. B. die ENV-Variablen Ihres Servers und andere Laufzeitdaten).
Um das Aussetzen vertraulicher Daten zu vermeiden, sollten Sie diesen Filter nicht verwenden. Schreiben Sie stattdessen Ihre eigene Exception Handler Middleware und holen Sie sich selektiv (rekursiv?) Die gewünschten Daten in die Protokolle.
Unter sys.exc_info
erfahren Sie, wie Sie das Trace-Back einer Exception erhalten und wie Sie es für Ihre Anforderungen verwenden können.
Auch wenn Sie mit einem CustomHandler arbeiten, sind Sie mit einem bestimmten Handler eingeschränkt, und soweit ich weiß, werden Drittanbieter-Handler die SafeExceptionReporterFilter
nicht verwenden.
Tatsächlich habe ich versucht, einen benutzerdefinierten Handler zu erstellen, wie @aumo mich vorschlug, aber es basierte auf dem Grayyp GELF-Handler und es war nicht möglich, die Filterung hinzuzufügen, ohne das Ganze neu zu schreiben. Was die sensiblen Laufzeitdaten anbelangt, weiß ich, dass der Sicherheitsmann mich nicht protokollieren lässt. Ich denke, ich werde weitermachen und meine eigene Ausnahme-Logger-Middleware schreiben, denn nur so kann ich kontrollieren, wie die Informationen veröffentlicht werden. Vielen Dank ! –
Sie können eine benutzerdefinierte Handler schreiben, die django.views.debug.ExceptionReporter
verwendet, um die Ausnahme zu formatieren.
Beispiel Verwendung von ExceptionReporter
:
from django.views.debug import ExceptionReporter
# exc_type, exc_value, traceback are a standard exception
# tuple as returned by sys.exc_info
reporter = ExceptionReporter(request, exc_type, exc_value, traceback)
html_report = reporter.get_traceback_html()
text_report = reporter.get_traceback_text()
ExceptionReporter
die ExceptionReporterFilter
durch die Einstellung DEFAULT_EXCEPTION_REPORTER_FILTER
definiert verwenden, die standardmäßig SafeExceptionReporterFilter
ist.
Werfen Sie einen Blick auf AdminEmailHandler
's implementation, um Informationen zum Erstellen einer benutzerdefinierten Handler
zu erhalten.
- 1. Verwenden von etwas anderem als einer ArrayList
- 2. Ist es möglich, die Fensterfarbe von Eclipse zu ändern (grau zu etwas anderem)?
- 3. Zuordnung eines Fremdschlüssels zu etwas anderem als einem Primärschlüssel
- 4. Ist es möglich, drawable + color als Hintergrund zu verwenden?
- 5. Ist es möglich, einen Datensatz als Datensatzelement zu verwenden?
- 6. Ist es möglich, den Memberfunktionsaufruf als Standardargument zu verwenden?
- 7. Ist es möglich, das Windows Explorer-Kontextmenü durch etwas anderes als ein Menü zu ersetzen?
- 8. Ist es möglich, Inline-Vorlagen zu verwenden?
- 9. Ist es möglich, einen Feldnamen als Variable in Djangos .annotate zu senden
- 10. .NET Httplistener Präfix Problem mit etwas anderem als localhost
- 11. Ist es möglich, ReSharper NUR als Test Runner zu verwenden?
- 12. Ist es möglich, Variable als @JsonRootName zu verwenden?
- 13. Ist es möglich, Variablen als dom-Elemente zu verwenden?
- 14. Ist es möglich, die Methode zu überschreiben, mit der Djangos Löschbestätigungsseite für Administratoren aufgerufen wurde?
- 15. Ist es möglich, Freiformformen als Fenster in OSX zu verwenden?
- 16. Ist es möglich, Datensatznamen als Parameter in Erlang zu verwenden
- 17. Ist es möglich, Hibernate als Persistenzanbieter von Glassfish zu verwenden?
- 18. Größenanpassung von Tabellenzellen mit etwas anderem als Label iOS/Swift
- 19. Ist es möglich, Reflexion mit LINQ zu Entität zu verwenden?
- 20. Ist es möglich, etwas, das als xsd: element definiert ist, neu zu definieren?
- 21. Ist es möglich, etwas mit Scala @BeanProperty mit Makros zu implementieren?
- 22. Der effizienteste Weg zu Array.Resize mit etwas anderem als "0" als Standardwert?
- 23. Ist es möglich, Django mit Qooxdoo Framework zu verwenden?
- 24. ist es möglich, Eigen mit c zu verwenden?
- 25. Ist es möglich, std :: accumulate mit std :: min zu verwenden?
- 26. Ist es möglich, reguläre Ausdrücke mit PDFquery zu verwenden?
- 27. Ist es möglich, Object.defineProperties mit Symbolen zu verwenden?
- 28. Kann ich SSH-Schlüssel in etwas anderem als PuTTy (auf Mac) verwenden?
- 29. Ist es möglich, GROUP BY mit Bind-Variablen zu verwenden?
- 30. Ist es möglich, Harmony (ES6) mit JSXTransformer.js zu verwenden?
Haben Sie 'DEBUG = False' gesetzt? – spg
Ja, natürlich, aber danke, dass Sie darauf hingewiesen haben. –