At holde dine private nøgler ude af kodelagre er afgørende for sikkerheden. Find ud af, hvordan du gør det, og hvordan du genopretter, hvis du allerede har begået fejlen.

I Django spiller en hemmelig nøgle en afgørende rolle i at forbedre sikkerheden i din applikation. Det hjælper med at administrere brugersessioner, beskytter mod Cross-Site Request Forgery (CSRF)-angreb og beskytter dine data ved blandt andet at generere og verificere kryptografiske signaturer.

Du bør altid holde dit projekts hemmelige nøgle sikker. Udsættelse af det vil efterlade din applikation modtagelig for ondsindede angreb fra hackere, hvilket kompromitterer dens sikkerhed. Hvis din hemmelige nøgle bliver kompromitteret, bør du vide, hvordan du genererer en ny for at reducere den negative indvirkning på din applikation.

Hvordan kan din hemmelige Django-nøgle blive afsløret?

Du kan ved et uheld gøre din Django hemmelige nøgle offentlig, hvis du ubevidst forpligter den til git eller et lignende kildekodelager. Denne fejl er almindelig blandt nye programmører, der stadig er

instagram viewer
lære om GitHub. Når det sker, kan du gøre et af følgende:

  1. Slet commit.
  2. Erstat den hemmelige nøgle helt.

Sletning af commit er måske ikke den bedste mulighed, fordi commit-historikken stadig kan være tilgængelig på forskellige måder, såsom cachelagrede kopier på GitHub eller andre distribuerede systemer. Den sikreste ting at gøre i en sådan situation er at antage, at din hemmelige nøgle allerede er kompromitteret.

Du bør generere en ny hemmelig nøgle for at erstatte den kompromitterede og beskytte den ved at bruge miljøvariabler. Under alle omstændigheder bør du lære, hvordan du genererer en ny hemmelig nøgle i Django for at beskytte din app mod ting som Cross-Site Request Forgery (CSRF) angreb.

Sådan genereres en ny hemmelig nøgle i Django

Django giver en funktion kaldet get_random_secret_key() der hjælper dig med at generere en ny hemmelig nøgle, når du kalder den. Get_random_secret_key()-funktionen er en hjælpefunktion, der bruger hemmeligheder modul i Python for at generere en sikker hemmelig nøgle på 50 tegn.

For at generere en ny hemmelig nøgle med funktionen get_random_secret_key() skal du åbne din Kommandolinjegrænseflade (CLI) og skriv denne kommando:

python manage.py shell -c "fra django.core.management.utils importer get_random_secret_key; print (get_random_secret_key())"

Ovenstående kommando importerer funktionen get_random_secret_key() fra django.core.management.utils og udskriver derefter en ny hemmelig nøgle på 50 tegn, som du kan bruge i dit projekt. Før du kører ovenstående kommando, skal du sikre dig, at du er i dit projekts rodmappen, dvs. den samme placering som administrere.py fil i dit projekt.

Du kan køre den samme kommando uden for din CLI ved at oprette en Python-fil og indsætte dette kodestykke i den:

# importer get_random_secret_key()-funktionen
fra django.core.management.utils importere get_random_secret_key

hemmelig_nøgle = få_tilfældig_hemmelig_nøgle()
print (hemmelig_nøgle)

Du kan køre koden ved at skrive dette i din CLI:

python filnavn.py

Kommandoen ovenfor skal udskrive en ny hemmelig nøgle på 50 tegn, som du kan bruge i dit projekt.

Sådan beskytter du din hemmelige nøgle med miljøvariabler

Du ønsker sandsynligvis ikke at ændre din hemmelige nøgle, hver gang du foretager en GitHub-commit. En effektiv måde at holde din hemmelige nøgle sikker på er ved at gemme den i en miljøvariabel. Miljøvariabler er værdier, du kan indstille uden for din kodebase, som dit program stadig kan få adgang til under kørsel. De kan gemme konfiguration, API-nøgler, databaselegitimationsoplysninger osv.

Du kan gemme dine miljøvariabler i en fil med navnet .env og ekskludere dem fra dit git-lager. Du kan gøre dette ved at oprette en fil kaldet .gitignore i dit projekt. .gitignore-filen indeholder en liste over filer og mapper, som Git ikke vil spore.

Filtyper og mappestrukturer varierer fra projekt til projekt, men der er fornuftige standardindstillinger, du kan anvende for hvert sprog. Du kan finde en liste over .gitignore-skabeloner i GitHubs gitignore-depot. De følgende trin viser dig, hvordan du bruger .gitignore-filen med miljøvariabler i Django.

1. Opret en .gitignore-fil

I din basismappe - placeringen af ​​din administrere.py fil - opret en .gitignore fil og kopier indholdet af denne GitHub fil ind i det. Denne fil er et eksempel på .gitignore til Python-projekter, som udelukker almindelige filer, som du ikke vil have i dit lager.

Alternativt kan du tilføje en .gitignore-fil til dit projekt, mens du opretter et lager på GitHub. For at gøre det skal du klikke på Tilføj .gitignore mulighed, søg efter Python, og vælg den.

2. Opret en .env-fil

I din basismappe skal du oprette en fil kaldet .env. Denne fil gemmer alle dine miljøvariabler. Kopier og indsæt din hemmelige nøgle i denne fil (fjern anførselstegn og mellemrum omkring den). Her er et eksempel:

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

Åbn .gitignore fil og bekræft, at .env filnavnet er i den. Hvis det ikke er det, kan du tilføje det ved at skrive filnavnet alene på en linje:

.env

3. Installer python-dotenv-pakken

Åbn din CLI, og installer python-dotenv pakke som en afhængighed.

pip installer python-dotenv

4. Rediger dine settings.py-fil

I din settings.py fil, skal du importere følgende pakker:

importere os
fra dotenv importere load_dotenv

Indlæs derefter miljøvariablerne fra din .env fil i din settings.py fil ved at ringe til load_dotenv() fungere:

load_dotenv()

Udskift endelig din SECRET_KEY variabel med denne kodelinje:

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

Du kan køre din udviklingsserver for at bekræfte, at ovenstående konfiguration virker. Hvis det gør det, skal dit projekt køre som du forventer. Kommandoen nedenfor starter din udviklingsserver.

python manage.py runserver

Hold din hemmelige nøgle sikker med miljøvariabler

At afsløre din hemmelige nøgle kan forårsage mange problemer for dig som udvikler. Du er måske ikke altid i stand til at genoprette dit projekt fra et angreb, især i et produktionsmiljø.

For at forhindre disse negative bivirkninger skal du altid opbevare din hemmelige nøgle i en miljøvariabel og bruge en .gitignore fil for at holde den ude af dit git-lager.