Sichere sensible Informationen in Django auf GitHub

Vaibhav Vaibhav 11 Juli 2021
Sichere sensible Informationen in Django auf GitHub

Projekte und Software zu erstellen und sie auf GitHub mit der Welt zu teilen, ist ein lustiger und aufregender Prozess. Wir freuen uns, unseren Anwendungen spannende und überzeugende Funktionen hinzuzufügen und den Code mithilfe von git auf GitHub zu übertragen. Dennoch neigen wir manchmal dazu, einen der kritischsten Aspekte der Softwareentwicklung zu vergessen: die Sicherheit.

Beim Erstellen von Software müssen wir sicherstellen, dass die Software sicher ist und keine potenziellen Lücken für eine Datenschutzverletzung aufweist.

Django, das Web-Framework, bietet robuste Sicherheit. Das Authentifizierungssystem von Django ist mächtig. Django hat eine settings.py, in der die meisten sensiblen Daten vorhanden sind. Daher könnte das Speichern einer solchen Datei auf GitHub eine gefährliche Entscheidung sein.

Aber keine Sorge. Es gibt einige Möglichkeiten, den Code auf GitHub zu pushen und gleichzeitig die Sicherheit zu gewährleisten.

Sichern Sie sensible Informationen in Django mithilfe von Umgebungsvariablen

Umgebungsvariablen sind einige Variablen, deren Werte außerhalb des Programms gespeichert werden und die aus dem Programm gelesen werden, um auf die Informationen zuzugreifen. Diese Variablen werden in einer .env-Datei gespeichert.

Erstellen Sie zuerst eine Datei .env. Fügen Sie dann in der Datei .gitignore .env hinzu. Dieser Zusatz stellt sicher, dass die Datei .env nicht auf GitHub hochgeladen wird.

Jetzt benötigen Sie ein Python-Paket, um mit diesen Dateien umzugehen. Der Paketname lautet Decouple. Verwenden Sie den folgenden pip-Befehl, um das Paket zu installieren.

pip install python-decouple

Oder,

pip3 install python-decouple

Fügen Sie in der Datei .env die vertraulichen Informationen hinzu. Diese Informationen können Ihr geheimer Schlüssel für das Django-Projekt, Ihre Datenbankanmeldeinformationen, Ihre E-Mail-ID und Ihr Passwort, Ihre API-Schlüssel usw. sein. Das Decouple Python Package sucht automatisch nach dieser Datei im Django-Projekt.

Speichern Sie die Informationen wie folgt. Stellen Sie sicher, dass Sie dieselbe Syntax befolgen: keine Leerzeichen vor und nach dem Zeichen = und keine Anführungszeichen, die die Zeichenketten darstellen.

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

Wie oben erwähnt, sollten und sollten wir grundsätzlich alle sensiblen Daten in der Datei settings.py aufbewahren. Dasselbe machen wir auch hier, aber wir fügen die Werte nicht direkt hinzu. Wir werden sie aus dieser soeben erstellten .env lesen.

Innerhalb der settings.py können wir die obigen Werte wie folgt abrufen.

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 hat einen cast-Parameter, der definiert, in welchen Datentyp der Wert umgewandelt werden soll. Standardmäßig liest Decouple alle Werte als Strings. Daher kann dieser ‘cast’-Parameter verwendet werden, um die Werte in den gewünschten Datentyp umzuwandeln.

Das ist es. Jetzt sind alle sensiblen Daten in einer .env-Datei sicher, und solange Sie diese Datei nicht auf GitHub hochladen, sind die Informationen sicher. Darüber hinaus wird das Projekt auch nicht unterbrochen, da die Variablen dort intakt sind, wo sie zuvor vorhanden waren. Das einzige, was sich geändert hat, ist die Art und Weise, wie wir ihnen Werte zuweisen.

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.