In PHP il modo accettato per proteggere le credenziali di accesso al database è archiviarle all'esterno della web root e ai file con le password include()
. In che modo le credenziali di accesso al database MySQL vengono archiviate in modo sicuro nelle applicazioni Python?Come archiviare in modo sicuro la password del database in Python?
6
A
risposta
4
Bene, un modo per farlo è inserire le password in un file config/ini separato che è non distribuito con il progetto. E poi, passare il percorso di questo file per l'ingresso principale dell'applicazione, ad esempio:
python main.py --config=/path/to/config.ini
Si noti che è necessario analizzare questo argomento --config
(vedi argparse) e quindi leggere e analizzare il config.ini
file.
Aggiornamento: Dal momento che lei ha citato le applicazioni web, c'è anche un altro modo di passare le informazioni di configurazione - attraverso il environ
. Per esempio, se si utilizza mod_wsgi
, è possibile putt questo nelle direttive WSGI:
SetEnv my_namespace.some_param some_value
E poi, questo valore sarà accessibile in applicazione con attraverso os.environ
:
import os
os.environ['my_namespace.some_param']
Cosa averti scoperto finora? Analizzare le applicazioni PHP sembra inutile se si vogliono conoscere le pratiche in Python ai miei occhi. E per fortuna c'è un sacco di codice Python in giro, quindi cosa ha coperto la tua ricerca? – hakre
Ho menzionato la best practice di PHP in quanto ambiente con cui ho familiarità. Per quanto riguarda Python, ho trovato solo suggerimenti per offuscare la password (base64 o simili) e per garantire che il file Python non sia leggibile da altri (autorizzazioni 0700). Chiedo qui se c'è un modo migliore. – dotancohen
Uso la libreria keyring (https://pypi.python.org/pypi/keyring) e memorizzo le credenziali effettive nell'utility di memorizzazione delle credenziali del sistema operativo. È molto facile da implementare e mi sembra abbastanza sicuro. – northben