Die Sicherheit einer Django-Anwendung ergibt sich aus ihrem gesamten Betrieb. Das Framework bietet Schutzmechanismen, deren Wirkung von Konfiguration und Anwendungscode abhängt. Prüfen Sie deshalb Einstellungen, Formulare, Datenzugriffe und die Infrastruktur gemeinsam.
Konfiguration für die Veröffentlichung prüfen
Deaktivieren Sie den Debug-Modus in der Produktion. Verwahren Sie den geheimen Schlüssel außerhalb des Repositorys und begrenzen Sie die erlaubten Hosts auf Ihre Domains. Kontrollieren Sie HTTPS und die Weitergabe von Proxy-Headern anhand der tatsächlichen Serverkette. Eine fehlerhafte Proxy-Konfiguration kann Annahmen über sichere Requests entkräften.
Führen Sie Djangos Deployment-Prüfung mit den Produktionseinstellungen aus. Sie unterstützt die Kontrolle, ersetzt aber keine Prüfung der eigenen Views, Berechtigungen oder Infrastruktur.
python manage.py check --deploy
Anmeldung und Datenzugriff getrennt prüfen
Nutzen Sie die vorgesehenen Authentifizierungs- und Passwortfunktionen. Eine Anmeldung identifiziert den Benutzer; die Berechtigung zur jeweiligen Operation muss zusätzlich festgelegt werden. Prüfen Sie besonders Zugriffe über erratbare Objekt-IDs und Verwaltungsfunktionen. Bei mehreren Kunden darf ein gültiger Benutzerzugang nicht zum Zugriff auf fremde Daten führen.
Bei Formularen mit Sitzungs-Cookies gehört der CSRF-Schutz zum Request-Fluss. Verwenden Sie die vorgesehenen Formulare und prüfen Sie fehlerhafte sowie fehlende Eingaben. Geben Sie keine Passwörter, Tokens oder internen Fehlermeldungen in Logs oder Antworten aus.
Eingaben und Ausgabe im jeweiligen Kontext behandeln
Validieren Sie Eingaben serverseitig. Nutzen Sie parametrisierte Datenbankabfragen und die vorgesehenen ORM-Funktionen. HTML-Ausgabe braucht den passenden Schutz für ihren Kontext; die pauschale Freigabe fremden HTMLs kann die automatische Maskierung umgehen. Dateiuploads benötigen eigene Regeln für Inhalt, Größe, Ablage und Zugriff.
Den Betrieb als laufende Aufgabe behandeln
Planen Sie Updates, die Überprüfung von Abhängigkeiten und den Entzug nicht mehr benötigter Zugänge. Testen Sie Backups durch Wiederherstellung in einer getrennten Umgebung. Ein dokumentierter Ablauf für Sicherheitsvorfälle hilft dem Team, Zuständigkeiten und Meldungen zu klären.
Prüfen Sie die wesentlichen Zugriffsgrenzen mit automatisierten Tests und ergänzen Sie sie durch eine Review des konkreten Systems. Eine Liste von Einstellungen ist eine Arbeitsgrundlage; sie belegt keinen vollständigen Schutz einer Anwendung.
Weiterführende Dokumentation: Django: Security.
Weiterführende Dokumentation: Django: Deployment checklist.