Proteggi le informazioni sensibili in Django su GitHub

Vaibhav Vaibhav 29 giugno 2021
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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.