Privāto atslēgu neatvēršana kodu krātuvēs ir ļoti svarīga drošībai. Uzziniet, kā to izdarīt un kā atgūt, ja jau esat pieļāvis kļūdu.
Programmā Django slepenajai atslēgai ir būtiska nozīme jūsu lietojumprogrammas drošības uzlabošanā. Tas palīdz pārvaldīt lietotāju sesijas, aizsargā pret Cross-Site Request Forgery (CSRF) uzbrukumiem un aizsargā jūsu datus, cita starpā ģenerējot un pārbaudot kriptogrāfiskos parakstus.
Jums vienmēr ir jāglabā sava projekta slepenā atslēga drošībā. Atklājot to, jūsu lietojumprogramma tiks pakļauta ļaunprātīgiem hakeru uzbrukumiem, tādējādi apdraudot tās drošību. Ja jūsu slepenā atslēga tiek apdraudēta, jums jāzina, kā izveidot jaunu, lai samazinātu negatīvo ietekmi uz jūsu lietojumprogrammu.
Kā var atklāt jūsu Django slepeno atslēgu?
Varat nejauši padarīt savu Django slepeno atslēgu publisku, ja to neapzināti ievietojat git vai līdzīgā pirmkoda krātuvē. Šī kļūda ir izplatīta starp jauniem programmētājiem, kuri joprojām ir uzzināt par GitHub. Kad tas notiek, varat veikt kādu no šīm darbībām:
- Dzēst apņemšanos.
- Pilnībā nomainiet slepeno atslēgu.
Saistību dzēšana var nebūt labākais risinājums, jo saistību vēsturei joprojām var piekļūt, izmantojot dažādus līdzekļus, piemēram, kešatmiņā saglabātās kopijas vietnē GitHub vai citās izplatītajās sistēmās. Visdrošākais, ko darīt šādā situācijā, ir pieņemt, ka jūsu slepenā atslēga jau ir apdraudēta.
Jums vajadzētu ģenerēt jaunu slepeno atslēgu, lai aizstātu apdraudēto un aizsargātu to, izmantojot vides mainīgos. Jebkurā gadījumā jums vajadzētu uzzināt, kā Django ģenerēt jaunu slepeno atslēgu, lai aizsargātu savu lietotni no tādām lietām kā Cross-Site Request Forgery (CSRF) uzbrukumi.
Kā ģenerēt jaunu slepeno atslēgu Django
Django nodrošina funkciju, ko sauc get_random_secret_key() kas palīdz ģenerēt jaunu slepeno atslēgu ikreiz, kad to izsaucat. Funkcija get_random_secret_key() ir utilīta funkcija, kas izmanto noslēpumi modulis Python, lai ģenerētu drošu slepeno atslēgu ar 50 rakstzīmēm.
Lai ģenerētu jaunu slepeno atslēgu ar funkciju get_random_secret_key(), atveriet savu Komandrindas interfeiss (CLI) un ierakstiet šo komandu:
python manage.py apvalks -c "no django.core.management.utils importēt get_random_secret_key; drukāt (get_random_secret_key())"
Iepriekš minētā komanda importē funkciju get_random_secret_key() no django.core.management.utils un pēc tam izdrukā jaunu slepeno atslēgu ar 50 rakstzīmēm, ko varat izmantot savā projektā. Pirms iepriekš minētās komandas palaišanas pārliecinieties, vai atrodaties sava projekta saknes direktorijā, t.i., tajā pašā vietā, kur pārvaldīt.py failu savā projektā.
To pašu komandu var palaist ārpus CLI, izveidojot Python failu un ielīmējot tajā šo koda fragmentu:
# importējiet funkciju get_random_secret_key()
no django.core.management.utils imports get_random_secret_key
secret_key = get_random_secret_key()
drukāt (slepenā_atslēga)
Varat palaist kodu, ierakstot šo savā CLI:
python failaNosaukums.py
Iepriekš norādītajai komandai ir jāizdrukā jauna slepenā atslēga ar 50 rakstzīmēm, ko varat izmantot savā projektā.
Kā aizsargāt savu slepeno atslēgu ar vides mainīgajiem
Jūs, iespējams, nevēlaties mainīt savu slepeno atslēgu katru reizi, kad veicat GitHub saistības. Efektīvs veids, kā aizsargāt savu slepeno atslēgu, ir tās glabāšana vides mainīgajā. Vides mainīgie ir vērtības, kuras varat iestatīt ārpus savas kodu bāzes un kurām programma joprojām var piekļūt izpildlaika laikā. Tie var saglabāt konfigurāciju, API atslēgas, datu bāzes akreditācijas datus utt.
Vides mainīgos varat saglabāt failā ar nosaukumu .env un izslēgt tos no sava git krātuves. To var izdarīt, izveidojot failu ar nosaukumu .gitignore savā projektā. .gitignore failā ir to failu un mapju saraksts, kurus Git neizsekos.
Failu veidi un direktoriju struktūras dažādos projektos atšķiras, taču ir saprātīgi noklusējuma iestatījumi, kurus varat lietot katrai valodai. Jūs varat atrast .gitignore veidņu sarakstu GitHub gitignore repozitorijs. Tālāk norādītās darbības parāda, kā lietotnē Django .gitignore failu ar vides mainīgajiem.
1. Izveidojiet .gitignore failu
Jūsu bāzes direktorijā — jūsu atrašanās vieta pārvaldīt.py fails — izveidojiet a .gitignore failu un kopējiet tā saturu GitHub fails tajā. Šis fails ir .gitignore paraugs Python projektiem, kas izslēdz parastos failus, kurus nevēlaties savā repozitorijā.
Varat arī pievienot savam projektam .gitignore failu, vienlaikus veidojot repozitoriju vietnē GitHub. Lai to izdarītu, noklikšķiniet uz Pievienojiet .gitignore opciju, meklējiet Python un atlasiet to.
2. Izveidojiet .env failu
Bāzes direktorijā izveidojiet failu ar nosaukumu .env. Šajā failā tiks saglabāti visi jūsu vides mainīgie. Kopējiet un ielīmējiet savu slepeno atslēgu šajā failā (noņemiet pēdiņas un atstarpes ap to). Šeit ir piemērs:
SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%
Atveriet .gitignore failu un apstipriniet, ka .env faila nosaukums ir tajā. Ja tā nav, varat to pievienot, ierakstot rindiņā atsevišķu faila nosaukumu:
.env
3. Instalējiet python-dotenv pakotni
Atveriet savu CLI un instalējiet python-dotenv paketi kā atkarību.
pip instalējiet python-dotenv
4. Mainiet savu settings.py failu
Tavā settings.py failu, importējiet šādas pakotnes:
imports os
no dotenv imports load_dotenv
Pēc tam ielādējiet vides mainīgos no sava .env failu savā settings.py failu, zvanot uz load_dotenv() funkcija:
load_dotenv()
Visbeidzot, nomainiet savu SECRET_KEY mainīgais ar šo koda rindu:
SECRET_KEY = os.environ.get(SECRET_KEY)
Varat palaist izstrādes serveri, lai pārliecinātos, ka iepriekš minētā konfigurācija darbojas. Ja tā notiek, jūsu projektam vajadzētu darboties, kā jūs gaidījāt. Tālāk sniegtā komanda sāks jūsu izstrādes serveri.
python manage.py runserver
Saglabājiet savu slepeno atslēgu, izmantojot vides mainīgos
Slepenās atslēgas atklāšana var radīt daudzas problēmas jums kā izstrādātājam. Iespējams, ne vienmēr varēsit atgūt savu projektu no uzbrukuma, it īpaši ražošanas vidē.
Lai novērstu šīs negatīvās blakusparādības, vienmēr saglabājiet savu slepeno atslēgu vides mainīgajā un izmantojiet a .gitignore failu, lai tas netiktu iekļauts jūsu git repozitorijā.