Trzymanie kluczy prywatnych z dala od repozytoriów kodu ma kluczowe znaczenie dla bezpieczeństwa. Dowiedz się, jak to zrobić i jak odzyskać, jeśli już popełniłeś błąd.
W Django tajny klucz odgrywa istotną rolę w zwiększaniu bezpieczeństwa Twojej aplikacji. Pomaga zarządzać sesjami użytkowników, chroni przed atakami typu Cross-Site Request Forgery (CSRF) i zabezpiecza dane, między innymi poprzez generowanie i weryfikowanie podpisów kryptograficznych.
Tajny klucz projektu należy zawsze przechowywać w bezpiecznym miejscu. Ujawnienie go narazi Twoją aplikację na złośliwe ataki hakerów, zagrażając jej bezpieczeństwu. Jeśli Twój tajny klucz zostanie naruszony, powinieneś wiedzieć, jak wygenerować nowy, aby zmniejszyć negatywny wpływ na aplikację.
Jak można ujawnić Twój tajny klucz Django?
Możesz przypadkowo upublicznić swój tajny klucz Django, jeśli nieświadomie zatwierdzisz go do git lub podobnego repozytorium kodu źródłowego. Ten błąd jest powszechny wśród nowych programistów, którzy wciąż są nauka o GitHubie. Gdy tak się stanie, możesz wykonać jedną z następujących czynności:
- Usuń zatwierdzenie.
- Całkowicie zastąp tajny klucz.
Usunięcie zatwierdzenia może nie być najlepszą opcją, ponieważ historia zatwierdzeń może być nadal dostępna za pomocą różnych środków, takich jak kopie w pamięci podręcznej w GitHub lub innych systemach rozproszonych. Najbezpieczniejszą rzeczą do zrobienia w takiej sytuacji jest założenie, że Twój tajny klucz jest już zagrożony.
Powinieneś wygenerować nowy tajny klucz, aby zastąpić zhakowany klucz i zabezpieczyć go za pomocą zmiennych środowiskowych. W każdym razie powinieneś nauczyć się generować nowy tajny klucz w Django, aby chronić swoją aplikację przed takimi rzeczami jak Ataki polegające na fałszowaniu żądań między witrynami (CSRF)..
Jak wygenerować nowy tajny klucz w Django
Django udostępnia funkcję o nazwie get_random_secret_key() który pomaga wygenerować nowy tajny klucz za każdym razem, gdy go wywołasz. Funkcja get_random_secret_key() jest funkcją użytkową, która używa metody tajniki moduł w Pythonie do generowania bezpiecznego tajnego klucza o długości 50 znaków.
Aby wygenerować nowy tajny klucz za pomocą funkcji get_random_secret_key(), otwórz swój Interfejs wiersza poleceń (CLI) i wpisz to polecenie:
python zarządzaj.py powłoka -c „z importu django.core.management.utils get_random_secret_key; drukuj (get_random_secret_key())"
Powyższe polecenie importuje funkcję get_random_secret_key() z django.core.management.utils a następnie drukuje nowy tajny klucz składający się z 50 znaków, którego możesz użyć w swoim projekcie. Przed uruchomieniem powyższego polecenia upewnij się, że znajdujesz się w katalogu głównym swojego projektu, tj. zarządzaj.py plik w swoim projekcie.
Możesz uruchomić to samo polecenie poza interfejsem CLI, tworząc plik Pythona i wklejając w nim ten fragment kodu:
# zaimportuj funkcję get_random_secret_key().
z django.core.management.utils import get_losowy_tajny_klucz
tajny_klucz = pobierz_losowy_tajny_klucz()
drukuj (tajny_klucz)
Możesz uruchomić kod, wpisując to w interfejsie CLI:
python nazwa_pliku.py
Powyższe polecenie powinno wydrukować nowy tajny klucz składający się z 50 znaków, którego możesz użyć w swoim projekcie.
Jak chronić swój tajny klucz za pomocą zmiennych środowiskowych
Prawdopodobnie nie chcesz zmieniać swojego tajnego klucza za każdym razem, gdy dokonujesz zatwierdzenia w GitHub. Skutecznym sposobem zabezpieczenia tajnego klucza jest przechowywanie go w zmiennej środowiskowej. Zmienne środowiskowe to wartości, które można ustawić poza bazą kodu, do których program ma nadal dostęp w czasie wykonywania. Mogą przechowywać konfigurację, klucze API, poświadczenia bazy danych itp.
Możesz przechowywać zmienne środowiskowe w pliku o nazwie .env i wykluczyć je z repozytorium git. Możesz to zrobić, tworząc plik o nazwie gitignore w Twoim projekcie. Plik .gitignore zawiera listę plików i folderów, których Git nie będzie śledzić.
Typy plików i struktury katalogów różnią się w zależności od projektu, ale istnieją rozsądne ustawienia domyślne, które można zastosować dla każdego języka. Listę szablonów .gitignore znajdziesz w Repozytorium gitignore GitHuba. Poniższe kroki pokazują, jak używać pliku .gitignore ze zmiennymi środowiskowymi w Django.
1. Utwórz plik .gitignore
W twoim katalogu podstawowym — lokalizacji twojego zarządzaj.py plik — utwórz plik gitignore plik i skopiuj jego zawartość plik GitHub w tym. Ten plik to przykładowy .gitignore dla projektów w Pythonie, który wyklucza typowe pliki, których nie chcesz mieć w swoim repozytorium.
Alternatywnie możesz dodać plik .gitignore do swojego projektu podczas tworzenia repozytorium na GitHub. Aby to zrobić, kliknij na Dodaj .gitignore opcję, wyszukaj Python i wybierz go.
2. Utwórz plik .env
W swoim katalogu podstawowym utwórz plik o nazwie .env. W tym pliku będą przechowywane wszystkie zmienne środowiskowe. Skopiuj i wklej swój tajny klucz do tego pliku (usuń cudzysłowy i spacje wokół niego). Oto przykład:
SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%
Otworzyć gitignore plik i potwierdzić, że .env jest w nim nazwa pliku. Jeśli tak nie jest, możesz go dodać, wpisując nazwę pliku w wierszu:
.env
3. Zainstaluj pakiet python-dotenv
Otwórz CLI i zainstaluj python-dotenv pakiet jako zależność.
pip zainstaluj python-dotenv
4. Zmodyfikuj swój plik settings.py
W Twoim ustawienia.py plik, zaimportuj następujące pakiety:
import os
z dotenv import ładuj_dotenv
Następnie załaduj zmienne środowiskowe z twojego .env wpisz do swojego ustawienia.py plik, dzwoniąc pod numer load_dotenv() funkcjonować:
load_dotenv()
Na koniec wymień swój SEKRETNY KLUCZ zmienna z tym wierszem kodu:
SECRET_KEY = os.environ.get('SEKRETNY KLUCZ')
Możesz uruchomić swój serwer programistyczny, aby potwierdzić, że powyższa konfiguracja działa. Jeśli tak, Twój projekt powinien działać zgodnie z oczekiwaniami. Poniższe polecenie uruchomi serwer deweloperski.
python Manage.py serwer uruchomieniowy
Chroń swój tajny klucz dzięki zmiennym środowiskowym
Ujawnienie tajnego klucza może spowodować wiele problemów dla programisty. Odzyskanie projektu po ataku może nie zawsze być możliwe, zwłaszcza w środowisku produkcyjnym.
Aby zapobiec tym negatywnym skutkom ubocznym, zawsze przechowuj swój tajny klucz w zmiennej środowiskowej i używaj a gitignore file, aby trzymać go z dala od repozytorium git.