Aus Sicherheitsgründen ist es von entscheidender Bedeutung, Ihre privaten Schlüssel aus Code-Repositorys fernzuhalten. Finden Sie heraus, wie das geht und wie Sie den Fehler beheben können, wenn Sie den Fehler bereits gemacht haben.
In Django spielt ein geheimer Schlüssel eine entscheidende Rolle bei der Verbesserung der Sicherheit Ihrer Anwendung. Es hilft bei der Verwaltung von Benutzersitzungen, schützt vor Cross-Site Request Forgery (CSRF)-Angriffen und schützt Ihre Daten unter anderem durch die Generierung und Überprüfung kryptografischer Signaturen.
Sie sollten den geheimen Schlüssel Ihres Projekts jederzeit sicher aufbewahren. Durch die Offenlegung wird Ihre Anwendung anfällig für böswillige Angriffe von Hackern, was ihre Sicherheit gefährdet. Wenn Ihr geheimer Schlüssel kompromittiert wird, sollten Sie wissen, wie Sie einen neuen generieren können, um die negativen Auswirkungen auf Ihre Anwendung zu reduzieren.
Wie kann Ihr geheimer Django-Schlüssel offengelegt werden?
Sie können Ihren geheimen Django-Schlüssel versehentlich öffentlich machen, wenn Sie ihn unwissentlich in Git oder ein ähnliches Quellcode-Repository übertragen. Dieser Fehler kommt häufig bei neuen Programmierern vor, die noch dabei sind
Lernen Sie GitHub kennen. In diesem Fall können Sie einen der folgenden Schritte ausführen:- Löschen Sie das Commit.
- Ersetzen Sie den geheimen Schlüssel vollständig.
Das Löschen des Commits ist möglicherweise nicht die beste Option, da der Commit-Verlauf weiterhin auf verschiedene Weise zugänglich sein kann, beispielsweise durch zwischengespeicherte Kopien auf GitHub oder anderen verteilten Systemen. In einer solchen Situation ist es am sichersten, davon auszugehen, dass Ihr geheimer Schlüssel bereits kompromittiert ist.
Sie sollten einen neuen geheimen Schlüssel generieren, um den kompromittierten Schlüssel zu ersetzen und ihn durch die Verwendung von Umgebungsvariablen zu schützen. Auf jeden Fall sollten Sie lernen, wie Sie in Django einen neuen geheimen Schlüssel generieren, um Ihre App vor solchen Dingen zu schützen Cross-Site Request Forgery (CSRF)-Angriffe.
So generieren Sie einen neuen geheimen Schlüssel in Django
Django bietet eine Funktion namens get_random_secret_key() Dadurch können Sie bei jedem Aufruf einen neuen geheimen Schlüssel generieren. Die Funktion get_random_secret_key() ist eine Hilfsfunktion, die das verwendet Geheimnisse Modul in Python, um einen sicheren geheimen Schlüssel mit 50 Zeichen zu generieren.
Um einen neuen geheimen Schlüssel mit der Funktion get_random_secret_key() zu generieren, öffnen Sie Ihre Befehlszeilenschnittstelle (CLI) und geben Sie diesen Befehl ein:
Python manage.py Shell -c „aus django.core.management.utils import get_random_secret_key; print (get_random_secret_key())“
Der obige Befehl importiert die Funktion get_random_secret_key() aus django.core.management.utils und druckt dann einen neuen geheimen Schlüssel mit 50 Zeichen aus, den Sie in Ihrem Projekt verwenden können. Bevor Sie den obigen Befehl ausführen, stellen Sie sicher, dass Sie sich im Stammverzeichnis Ihres Projekts befinden, d. h. am selben Ort wie das manage.py Datei in Ihrem Projekt.
Sie können denselben Befehl außerhalb Ihrer CLI ausführen, indem Sie eine Python-Datei erstellen und diesen Codeausschnitt darin einfügen:
# Importieren Sie die Funktion get_random_secret_key()
aus django.core.management.utils importieren get_random_secret_key
Secret_key = get_random_secret_key()
print (secret_key)
Sie können den Code ausführen, indem Sie Folgendes in Ihre CLI eingeben:
Python-Dateiname.py
Der obige Befehl sollte einen neuen geheimen Schlüssel mit 50 Zeichen ausdrucken, den Sie in Ihrem Projekt verwenden können.
So schützen Sie Ihren geheimen Schlüssel mit Umgebungsvariablen
Sie möchten Ihren geheimen Schlüssel wahrscheinlich nicht jedes Mal ändern, wenn Sie einen GitHub-Commit durchführen. Eine effiziente Möglichkeit, Ihren geheimen Schlüssel sicher aufzubewahren, besteht darin, ihn in einer Umgebungsvariablen zu speichern. Umgebungsvariablen sind Werte, die Sie außerhalb Ihrer Codebasis festlegen können und auf die Ihr Programm während der Laufzeit weiterhin zugreifen kann. Sie können Konfigurationen, API-Schlüssel, Datenbankanmeldeinformationen usw. speichern.
Sie können Ihre Umgebungsvariablen in einer Datei namens .env speichern und sie aus Ihrem Git-Repository ausschließen. Sie können dies tun, indem Sie eine Datei namens erstellen .gitignore in Ihrem Projekt. Die .gitignore-Datei enthält eine Liste von Dateien und Ordnern, die Git nicht verfolgt.
Dateitypen und Verzeichnisstrukturen variieren von Projekt zu Projekt, es gibt jedoch sinnvolle Standardeinstellungen, die Sie für jede Sprache anwenden können. Eine Liste der .gitignore-Vorlagen finden Sie unter GitHubs Gitignore-Repository. Die folgenden Schritte zeigen Ihnen, wie Sie die .gitignore-Datei mit Umgebungsvariablen in Django verwenden.
1. Erstellen Sie eine .gitignore-Datei
In Ihrem Basisverzeichnis – dem Speicherort Ihres manage.py Datei – erstellen Sie eine .gitignore Datei und kopieren Sie deren Inhalt GitHub-Datei hinein. Bei dieser Datei handelt es sich um eine Beispiel-.gitignore-Datei für Python-Projekte, die allgemeine Dateien ausschließt, die Sie nicht in Ihrem Repository haben möchten.
Alternativ können Sie Ihrem Projekt eine .gitignore-Datei hinzufügen, während Sie ein Repository auf GitHub erstellen. Klicken Sie dazu auf Fügen Sie .gitignore hinzu Option, suchen Sie nach Python und wählen Sie es aus.
2. Erstellen Sie eine .env-Datei
Erstellen Sie in Ihrem Basisverzeichnis eine Datei mit dem Namen .env. In dieser Datei werden alle Ihre Umgebungsvariablen gespeichert. Kopieren Sie Ihren geheimen Schlüssel und fügen Sie ihn in diese Datei ein (entfernen Sie die Anführungszeichen und Leerzeichen darum). Hier ist ein Beispiel:
SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%
Öffne das .gitignore Datei und bestätigen Sie, dass die .env Dateiname steht drin. Ist dies nicht der Fall, können Sie es hinzufügen, indem Sie den Dateinamen allein in eine Zeile schreiben:
.env
3. Installieren Sie das python-dotenv-Paket
Öffnen Sie Ihre CLI und installieren Sie die python-dotenv Paket als Abhängigkeit.
pip install python-dotenv
4. Ändern Sie Ihre Datei „settings.py“.
In deinem Settings.py Datei importieren Sie die folgenden Pakete:
importieren os
aus dotenv importieren load_dotenv
Laden Sie als Nächstes die Umgebungsvariablen von Ihrem .env Datei in Ihre Settings.py Datei durch Aufrufen der load_dotenv() Funktion:
load_dotenv()
Ersetzen Sie schließlich Ihre GEHEIMER SCHLÜSSEL Variable mit dieser Codezeile:
SECRET_KEY = os.environ.get('GEHEIMER SCHLÜSSEL')
Sie können Ihren Entwicklungsserver ausführen, um zu bestätigen, dass die obige Konfiguration funktioniert. Wenn dies der Fall ist, sollte Ihr Projekt wie erwartet laufen. Der folgende Befehl startet Ihren Entwicklungsserver.
python manage.py runserver
Bewahren Sie Ihren geheimen Schlüssel mit Umgebungsvariablen sicher auf
Die Offenlegung Ihres geheimen Schlüssels kann für Sie als Entwickler viele Probleme verursachen. Möglicherweise können Sie Ihr Projekt nach einem Angriff nicht immer wiederherstellen, insbesondere in einer Produktionsumgebung.
Um diese negativen Nebenwirkungen zu vermeiden, speichern Sie Ihren geheimen Schlüssel immer in einer Umgebungsvariablen und verwenden Sie a .gitignore Datei, um sie aus Ihrem Git-Repository fernzuhalten.