Ist es okay, dass die Datenbank-Anmeldeinformationen werden im Klartext gespeichert?
Standardmäßig die Django Datenbank-host/user/password gespeichert sind, in das Projekt settings.py Datei in plain text.
Ich kann nicht scheinen zu denken, einen besseren Weg im moment, aber das scheint gegen best practices für die Passwort-Speicherung. Zugegeben, wenn ein Angreifer Zugriff auf die Datei mit den Einstellungen, dann ist wahrscheinlich schon verloren. Auch wenn die Datei verschlüsselt wurden, der Angreifer würde wohl die Mittel haben, um es zu entschlüsseln, indem Sie dann.
Ist das okay?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie richtig, dass die Speicherung von Passwörtern im Klartext und in einem settings.py die Datei ist keine gute Sicherheit. Sie könnten die Sicherheit erhöhen durch:
Einstellung der Berechtigungen korrekt (dies hängt von Ihrer set-up). Im Idealfall nur python sollte in der Lage sein, die Datei zu Lesen.
Speichern der Datei aus der
www
oderhtdocs
root. Wenn an diesem Punkt ein Angreifer immer noch Zugriff auf Sie hat, Sie sind geschraubt sowieso.Für zusätzliche Sicherheit können Sie die Verschlüsselung der Verbindung-Einstellungen mithilfe der symmetrischen Verschlüsselung (z.B. AES). Bewahren Sie den Schlüssel woanders. Also selbst wenn jemand es geschafft den Zugriff auf die Verbindungs-Einstellungen, Sie würden noch brauchen, um den Schlüssel zu finden. Der größte Nachteil ist, dass Sie jetzt haben, zu schreiben, die Verbindung Methode.
Den Twelve-Factor App kodifiziert durch Heroku empfiehlt
Dies ist besonders wichtig für die Verwaltung von Anmeldeinformationen, die im Idealfall sollte nie verpflichtet werden, um die source-control.
Den django-environ Bibliothek gibt eine nette Annäherung, um das ziehen die meisten Umwelt-spezifische Konfiguration aus dem settings.py Datei, aber Sie könnte einen langen Weg gehen, nur durch das verweisen auf die empfindlichsten bits mit dem standard-os-Bibliothek, z.B.
'PASSWORD': os.environ['DBPASS']
Natürlich, werden Sie wahrscheinlich noch speichern Passwörter im Klartext irgendwo, aber wenn die Datei nicht eingebettet in Ihre Codebasis, es ist weit weniger wahrscheinlich durchgesickert sein.
Ja, es ist standard-Verfahren für alle Datenbank-Kommunikation Programm. Es ist wirklich nicht eine "bessere Möglichkeit", es zu tun.
Gibt es Möglichkeiten, um zu verhindern ungültigen hosts verbinden (ip-Tische, private ip-Adressen), aber die eigentliche Verbindung details sind fast immer Klartext.
Speichern Sie die Datei außerhalb des web-root wird einigen helfen, aber wenn die Angreifer Zugriff auf das Dateisystem spielt es keine Rolle.