Za varnost je bistvenega pomena, da vaši zasebni ključi niso v repozitorijih kod. Ugotovite, kako to storiti in kako obnoviti, če ste že naredili napako.

V Djangu igra skrivni ključ ključno vlogo pri izboljšanju varnosti vaše aplikacije. Pomaga pri upravljanju uporabniških sej, ščiti pred napadi ponarejanja zahtev navzkrižnih mest (CSRF) in varuje vaše podatke z ustvarjanjem in preverjanjem kriptografskih podpisov, med drugim.

Skrivni ključ vašega projekta morate vedno varovati. Če ga razkrijete, bo vaša aplikacija dovzetna za zlonamerne napade hekerjev, kar bo ogrozilo njeno varnost. Če je vaš skrivni ključ ogrožen, bi morali vedeti, kako ustvariti novega, da zmanjšate negativen vpliv na vašo aplikacijo.

Kako je mogoče razkriti vaš skrivni ključ Django?

Svoj skrivni ključ Django lahko pomotoma naredite javnega, če ga nevede prenesete v git ali podobno skladišče izvorne kode. Ta napaka je pogosta med novimi programerji, ki so še učenje o GitHubu. Ko se to zgodi, lahko storite nekaj od naslednjega:

  1. Izbriši obvezo.
  2. V celoti zamenjajte tajni ključ.

Brisanje objave morda ni najboljša možnost, ker je lahko zgodovina objave še vedno dostopna na različne načine, kot so predpomnjene kopije na GitHubu ali drugih porazdeljenih sistemih. Najvarnejša stvar v takšni situaciji je domnevati, da je vaš skrivni ključ že ogrožen.

Ustvariti morate nov skrivni ključ, da nadomestite ogroženega in ga zaščitite z uporabo spremenljivk okolja. V vsakem primeru bi se morali naučiti, kako ustvariti nov skrivni ključ v Djangu, da zaščitite svojo aplikacijo pred stvarmi, kot so Napadi s ponarejanjem zahtev na različnih mestih (CSRF)..

Kako ustvariti nov tajni ključ v Djangu

Django nudi funkcijo, imenovano get_random_secret_key() ki vam pomaga ustvariti nov skrivni ključ, kadar koli ga pokličete. Funkcija get_random_secret_key() je pomožna funkcija, ki uporablja skrivnosti modul v Pythonu za ustvarjanje varnega tajnega ključa s 50 znaki.

Če želite ustvariti nov skrivni ključ s funkcijo get_random_secret_key(), odprite svoj Vmesnik ukazne vrstice (CLI) in vnesite ta ukaz:

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

Zgornji ukaz uvozi funkcijo get_random_secret_key() iz django.core.management.utils in nato natisne nov skrivni ključ s 50 znaki, ki ga lahko uporabite v svojem projektu. Preden zaženete zgornji ukaz, se prepričajte, da ste v korenskem imeniku svojega projekta, tj. na isti lokaciji kot upravljati.py datoteko v vašem projektu.

Isti ukaz lahko zaženete zunaj svojega CLI, tako da ustvarite datoteko Python in vanjo prilepite ta delček kode:

# uvozite funkcijo get_random_secret_key().
od django.core.management.utils uvoz get_random_secret_key

skrivni_ključ = get_random_secret_key()
natisni (skrivni_ključ)

Kodo lahko zaženete tako, da v svoj CLI vnesete to:

ime datoteke python.py

Zgornji ukaz bi moral natisniti nov skrivni ključ s 50 znaki, ki ga lahko uporabite v svojem projektu.

Kako zaščititi svoj tajni ključ s spremenljivkami okolja

Verjetno ne želite spreminjati svojega skrivnega ključa vsakič, ko se zavežete na GitHub. Učinkovit način za varovanje vašega skrivnega ključa je shranjevanje v spremenljivko okolja. Okoljske spremenljivke so vrednosti, ki jih lahko nastavite zunaj kodne baze, do katerih lahko vaš program še vedno dostopa med izvajanjem. Shranjujejo lahko konfiguracijo, ključe API-ja, poverilnice baze podatkov itd.

Svoje spremenljivke okolja lahko shranite v datoteko z imenom .env in jih izključite iz vašega repozitorija git. To lahko storite tako, da ustvarite datoteko z imenom .gitignore v vašem projektu. Datoteka .gitignore vsebuje seznam datotek in map, ki jim Git ne bo sledil.

Vrste datotek in strukture imenikov se razlikujejo od projekta do projekta, vendar obstajajo smiselne privzete nastavitve, ki jih lahko uporabite za vsak jezik. Seznam predlog .gitignore najdete v GitHubovo skladišče gitignore. Naslednji koraki vam pokažejo, kako uporabite datoteko .gitignore s spremenljivkami okolja v Djangu.

1. Ustvarite datoteko .gitignore

V vašem osnovnem imeniku—lokacija vašega upravljati.py datoteka—ustvari a .gitignore datoteko in kopirajte vsebino tega Datoteka GitHub vanj. Ta datoteka je vzorec .gitignore za projekte Python, ki izključuje običajne datoteke, ki jih ne želite v svojem skladišču.

Druga možnost je, da dodate datoteko .gitignore svojemu projektu med ustvarjanjem repozitorija na GitHubu. Če želite to narediti, kliknite na Dodajte .gitignore poiščite Python in ga izberite.

2. Ustvarite datoteko .env

V svojem osnovnem imeniku ustvarite datoteko z imenom .env. Ta datoteka bo shranila vse vaše spremenljivke okolja. Kopirajte in prilepite svoj skrivni ključ v to datoteko (odstranite narekovaje in presledke okoli njega). Tukaj je primer:

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

Odprite .gitignore datoteko in potrdite, da je .env ime datoteke je v njej. Če ni, jo lahko dodate tako, da samostojno ime datoteke napišete v vrstico:

.env

3. Namestite paket python-dotenv

Odprite svoj CLI in namestite python-dotenv paket kot odvisnost.

pip namestite python-dotenv

4. Spremenite svojo datoteko settings.py

V vašem nastavitve.py datoteko, uvozite naslednje pakete:

uvoz os
od dotenv uvoz load_dotenv

Nato naložite spremenljivke okolja iz vašega .env datoteko v svoj nastavitve.py datoteko tako, da pokličete load_dotenv() funkcija:

load_dotenv()

Končno zamenjajte svojega SECRET_KEY spremenljivka s to vrstico kode:

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

Za potrditev, da zgornja konfiguracija deluje, lahko zaženete svoj razvojni strežnik. Če se, bi moral vaš projekt delovati, kot bi pričakovali. Spodnji ukaz bo zagnal vaš razvojni strežnik.

python manage.py runserver

Zavarujte svoj skrivni ključ s spremenljivkami okolja

Razkritje vašega skrivnega ključa lahko povzroči veliko težav za vas kot razvijalca. Morda ne boste mogli vedno obnoviti svojega projekta pred napadom, zlasti v produkcijskem okolju.

Da preprečite te negativne stranske učinke, vedno shranite skrivni ključ v spremenljivko okolja in uporabite a .gitignore datoteko, da ne bo v vašem repozitoriju git.