Proteggi le informazioni sensibili in Django su GitHub
Costruire progetti e software e condividerli con il mondo su GitHub è un processo divertente ed entusiasmante. Ci piace aggiungere funzionalità interessanti e avvincenti alle nostre applicazioni e inviare il codice a GitHub utilizzando git. Tuttavia, a volte tendiamo a dimenticare uno degli aspetti più critici dello sviluppo del software: la sicurezza.
Quando creiamo software, dobbiamo assicurarci che il software sia sicuro e non abbia potenziali scappatoie per una violazione dei dati.
Django, il framework web, è dotato di una solida sicurezza. Il sistema di autenticazione di Django è potente. Django ha un settings.py
dove è presente la maggior parte dei dati sensibili. Quindi, archiviare un tale file su GitHub potrebbe essere una decisione pericolosa.
Ma non preoccuparti. Esistono alcuni modi per inviare il codice su GitHub e garantire la sicurezza allo stesso tempo.
Proteggi le informazioni sensibili in Django usando le variabili d’ambiente
Le variabili d’ambiente sono alcune variabili i cui valori sono memorizzati all’esterno del programma e vengono lette dal programma per accedere alle informazioni. Queste variabili sono memorizzate in un file .env
.
Innanzitutto, crea un file .env
. Quindi, all’interno del file .gitignore
, aggiungi .env
. Questa aggiunta assicurerà che il file .env
non venga caricato su GitHub.
Ora avrai bisogno di un pacchetto Python per gestire questi file. Il nome del pacchetto è Decouple
. Utilizzare il seguente comando pip
per installare il pacchetto.
pip install python-decouple
O,
pip3 install python-decouple
All’interno del file .env
, aggiungi le informazioni sensibili. Queste informazioni potrebbero essere la chiave segreta del progetto Django, le credenziali del database, l’ID e la password e-mail, le chiavi API, ecc. Il pacchetto Decouple Python cercherà automaticamente questo file all’interno del progetto Django.
Memorizzare le informazioni nel modo seguente. Assicurati di seguire la stessa sintassi: nessuno spazio incluso prima e dopo il segno =
e nessuna virgoletta aggiunta per rappresentare le stringhe.
SECRET_KEY=abcdefghijklmnopqrstuvwxyz0123456789
DEBUG=True
DATABASE_NAME=HELLO_DJANGO
DATABASE_USERNAME=U_HELLO
DATABASE_PASSWORD=hA8(scA@!fg3*sc&xaGh&6%-l<._&xCf
DATABASE_HOST=127.0.0.1
DATABASE_PORT=127.0.0.1
WASD_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
PQRS_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
EMAIL=qwerty@wasd.com
PASSWORD=abcdefghijklmnopqrstuvwxyz0123456789
Come accennato in precedenza, generalmente e dovremmo conservare tutti i dati sensibili nel file settings.py
. Faremo lo stesso anche qui, ma non aggiungeremo direttamente i valori. Li leggeremo da questo .env
che abbiamo appena creato.
All’interno di settings.py
, possiamo recuperare i valori di cui sopra come segue.
import os
from decouple import config
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = config("SECRET_KEY") # Here
DEBUG = config("DEBUG", cast=bool) # Here
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": config("DATABASE_NAME"), # Here
"USER": config("DATABASE_USERNAME"), # Here
"PASSWORD": config("DATABASE_PASSWORD"), # Here
"HOST": config("DATABASE_HOST"), # Here
"PORT": config("DATABASE_PORT", cast=int), # Here
}
}
WASD_API_KEY = config("WASD_API_KEY")
PQRS_API_KEY = config("PQRS_API_KEY")
EMAIL = config("EMAIL")
PASSWORD = config("PASSWORD")
config
ha un parametro cast
che definisce a quale tipo di dati deve essere lanciato il valore. Per impostazione predefinita, Decouple legge tutti i valori come stringhe. Quindi, questo parametro cast
può essere utilizzato per trasmettere i valori al tipo di dati desiderato.
Questo è tutto. Ora, tutti i dati sensibili sono al sicuro in un file .env
e finché non carichi questo file su GitHub, le informazioni sono al sicuro. Inoltre, il progetto non si rompe nemmeno perché le variabili sono intatte dove erano presenti in precedenza. L’unica cosa che è cambiata è il modo in cui assegniamo loro i valori.