Držanje vaših privatnih ključeva izvan spremišta kodova ključno je za sigurnost. Saznajte kako to učiniti i kako se oporaviti ako ste već pogriješili.

U Djangu, tajni ključ igra vitalnu ulogu u poboljšanju sigurnosti vaše aplikacije. Pomaže u upravljanju korisničkim sesijama, štiti od napada Cross-Site Request Forgery (CSRF) i štiti vaše podatke generiranjem i provjerom kriptografskih potpisa između ostalog.

Tajni ključ vašeg projekta trebali biste čuvati na sigurnom cijelo vrijeme. Njegovo izlaganje vašu će aplikaciju učiniti podložnom zlonamjernim napadima hakera, ugrožavajući njezinu sigurnost. Ako vaš tajni ključ bude ugrožen, trebali biste znati kako generirati novi da biste smanjili negativan utjecaj na svoju aplikaciju.

Kako se vaš Django tajni ključ može otkriti?

Svoj Django tajni ključ možete slučajno učiniti javnim ako ga nesvjesno predate git-u ili sličnom repozitoriju izvornog koda. Ova je pogreška uobičajena među novim programerima koji su još uvijek učenje o GitHubu. Kada se to dogodi, možete učiniti nešto od sljedećeg:

instagram viewer
  1. Izbriši commit.
  2. U potpunosti zamijenite tajni ključ.

Brisanje obveza možda nije najbolja opcija jer se povijesti obveza još uvijek može pristupiti na različite načine, kao što su predmemorirane kopije na GitHubu ili drugim distribuiranim sustavima. Najsigurnija stvar koju možete učiniti u takvoj situaciji je pretpostaviti da je vaš tajni ključ već ugrožen.

Trebali biste generirati novi tajni ključ da biste zamijenili ugroženi i zaštitili ga korištenjem varijabli okruženja. U svakom slučaju, trebali biste naučiti kako generirati novi tajni ključ u Djangu da zaštitite svoju aplikaciju od stvari kao što su Cross-Site Request Forgery (CSRF) napadi.

Kako generirati novi tajni ključ u Djangu

Django nudi funkciju tzv get_random_secret_key() koji vam pomaže generirati novi tajni ključ kad god ga pozovete. Funkcija get_random_secret_key() je pomoćna funkcija koja koristi tajne modul u Pythonu za generiranje sigurnog tajnog ključa od 50 znakova.

Da biste generirali novi tajni ključ s funkcijom get_random_secret_key(), otvorite svoj Sučelje naredbenog retka (CLI) i upišite ovu naredbu:

python management.py shell -c "iz django.core.management.utils import get_random_secret_key; ispis (get_random_secret_key())"

Gornja naredba uvozi funkciju get_random_secret_key() iz django.core.management.utils a zatim ispisuje novi tajni ključ od 50 znakova, koji možete koristiti u svom projektu. Prije pokretanja gornje naredbe, provjerite jeste li u korijenskom direktoriju svog projekta, tj. na istoj lokaciji kao upravljati.py datoteku u vašem projektu.

Istu naredbu možete pokrenuti izvan svog CLI-ja stvaranjem Python datoteke i lijepljenjem ovog isječka koda u nju:

# uvoz funkcije get_random_secret_key().
iz django.core.management.utils uvoz dobiti_nasumični_tajni_ključ

tajni_ključ = get_random_tajni_ključ()
ispis (tajni_ključ)

Možete pokrenuti kod tako da upišete ovo u svoj CLI:

python naziv datoteke.py

Gornja naredba trebala bi ispisati novi tajni ključ od 50 znakova koji možete koristiti u svom projektu.

Kako zaštititi svoj tajni ključ pomoću varijabli okruženja

Vjerojatno ne želite mijenjati svoj tajni ključ svaki put kada napravite GitHub commit. Učinkovit način čuvanja vašeg tajnog ključa je njegovo pohranjivanje u varijablu okruženja. Varijable okoline su vrijednosti koje možete postaviti izvan svoje baze koda, a kojima vaš program još uvijek može pristupiti tijekom izvođenja. Mogu pohraniti konfiguraciju, API ključeve, vjerodajnice baze podataka itd.

Varijable okruženja možete pohraniti u datoteku pod nazivom .env i isključiti ih iz svog git repozitorija. To možete učiniti stvaranjem datoteke pod nazivom .gitignorirati u vašem projektu. Datoteka .gitignore sadrži popis datoteka i mapa koje Git neće pratiti.

Vrste datoteka i strukture direktorija razlikuju se od projekta do projekta, ali postoje razumne zadane postavke koje možete primijeniti za svaki jezik. Možete pronaći popis .gitignore predložaka u GitHubovo spremište gitignore. Sljedeći vam koraci pokazuju kako koristiti datoteku .gitignore s varijablama okruženja u Djangu.

1. Stvorite datoteku .gitignore

U vašem osnovnom imeniku—lokacija vašeg upravljati.py datoteka—stvorite a .gitignorirati datoteku i kopirajte sadržaj ovoga GitHub datoteka u njega. Ta je datoteka ogledni .gitignore za Python projekte koji isključuje uobičajene datoteke koje ne želite u svom repozitoriju.

Alternativno, možete dodati .gitignore datoteku svom projektu dok stvarate repozitorij na GitHubu. Da biste to učinili, kliknite na Dodajte .gitignore opciju, potražite Python i odaberite ga.

2. Stvorite .env datoteku

U svom osnovnom direktoriju kreirajte datoteku pod nazivom .env. Ova datoteka će pohraniti sve vaše varijable okruženja. Kopirajte i zalijepite svoj tajni ključ u ovu datoteku (uklonite navodnike i razmake oko njega). Evo primjera:

SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%

Otvori .gitignorirati datoteku i potvrdite da je .env naziv datoteke je u njemu. Ako nije, možete ga dodati tako da napišete naziv datoteke samostalno u retku:

.env

3. Instalirajte paket python-dotenv

Otvorite svoj CLI i instalirajte python-dotenv paket kao ovisnost.

pip instaliraj python-dotenv

4. Izmijenite svoju datoteku settings.py

U vašem postavke.py datoteku, uvezite sljedeće pakete:

uvoz os
iz dotenv uvoz load_dotenv

Zatim učitajte varijable okoline iz vašeg .env datoteku u svoj postavke.py datoteku pozivom na load_dotenv() funkcija:

load_dotenv()

Na kraju, zamijenite svoj TAJNI_KLJUČ varijabla s ovom linijom koda:

SECRET_KEY = os.environ.get('SECRET_KEY')

Možete pokrenuti svoj razvojni poslužitelj kako biste potvrdili da gornja konfiguracija radi. Ako se dogodi, vaš bi se projekt trebao odvijati kako očekujete. Donja naredba pokrenut će vaš razvojni poslužitelj.

python manage.py runserver

Čuvajte svoj tajni ključ pomoću varijabli okruženja

Izlaganje vašeg tajnog ključa može uzrokovati mnoge probleme vama kao programeru. Možda nećete uvijek moći oporaviti svoj projekt od napada, osobito u proizvodnom okruženju.

Kako biste spriječili ove negativne nuspojave, uvijek pohranite tajni ključ u varijablu okruženja i koristite a .gitignorirati da biste je držali izvan svog git spremišta.