2013-06-26 8 views
6

In PHP ist die akzeptierte Möglichkeit, Anmeldeinformationen für die Datenbank zu sichern, sie außerhalb des Webstamms zu speichern und die Dateien mit den Passwörtern zu include(). Wie werden Anmeldeinformationen für die MySQL-Datenbank in Python-Anwendungen sicher gespeichert?Wie sichere Datenbank Passwort in Python sicher?

+0

Was haben Sie bis jetzt herausgefunden? Ein Blick in PHP-Anwendungen scheint nutzlos, wenn Sie in meinen Augen etwas über Praktiken in Python lernen wollen. Und zum Glück schwebt viel Python-Code herum. Was hat Ihre Forschung vertuscht? – hakre

+1

Ich erwähnte die Best Practice von PHP, da es sich um eine Umgebung handelt, mit der ich vertraut bin. Was Python betrifft, habe ich nur Vorschläge gefunden, um das Passwort zu verschleiern (base64 o.ä.), und um sicherzustellen, dass die Python-Datei von anderen nicht gelesen werden kann (0700 Berechtigungen). Ich frage hier, ob es einen besseren Weg gibt. – dotancohen

+1

Ich benutze die Schlüsselbund-Bibliothek (https://pypi.python.org/pypi/keyring) und speichere die eigentlichen Zugangsdaten im Speicherdienstprogramm für Anmeldeinformationen des Betriebssystems. Es ist sehr einfach zu implementieren, und es scheint mir ziemlich sicher zu sein. – northben

Antwort

4

Nun, eine Möglichkeit besteht darin, die Passwörter in eine separate config/ini-Datei zu schreiben, die nicht mit dem Projekt bereitgestellt wird. Und dann übergeben Sie den Pfad dieser Datei auf den Haupteintrag der Anwendung, zum Beispiel:

python main.py --config=/path/to/config.ini

Beachten Sie, dass Sie benötigen, um dieses --config Argument zu analysieren (siehe argparse) und dann lesen und analysieren, um die config.ini Datei.

aktualisieren: Da Sie Web-Anwendungen erwähnt, gibt es auch eine andere Möglichkeit Konfigurationsinformationen vorbei - durch die environ. wenn Sie mod_wsgi Verwenden Sie zum Beispiel, können Sie dies in den wsgi Richtlinien putten:

SetEnv my_namespace.some_param some_value

Und dann wird dieser Wert in der Anwendung zugänglich sein mit durch os.environ:

import os 
os.environ['my_namespace.some_param'] 
Verwandte Themen