Păstrarea cheilor private în depozitele de cod este vitală pentru securitate. Aflați cum să faceți acest lucru și cum să vă recuperați dacă ați făcut deja greșeala.
În Django, o cheie secretă joacă un rol vital în îmbunătățirea securității aplicației dvs. Ajută la gestionarea sesiunilor utilizatorilor, protejează împotriva atacurilor Cross-Site Request Forgery (CSRF) și vă protejează datele prin generarea și verificarea semnăturilor criptografice, printre altele.
Ar trebui să păstrați în siguranță cheia secretă a proiectului în orice moment. Expunerea acestuia va lăsa aplicația dumneavoastră susceptibilă la atacuri rău intenționate din partea hackerilor, compromițându-i securitatea. Dacă cheia dvs. secretă este compromisă, ar trebui să știți cum să generați una nouă pentru a reduce impactul negativ asupra aplicației dvs.
Cum poate fi expusă cheia dvs. secretă Django?
Puteți face publică accidental cheia dvs. secretă Django dacă o trimiteți fără să știți în git sau într-un depozit de cod sursă similar. Această greșeală este comună în rândul programatorilor noi care încă sunt
aflați despre GitHub. Când se întâmplă, puteți face una dintre următoarele:- Ștergeți comiterea.
- Înlocuiți cheia secretă în întregime.
Ștergerea commit-ului ar putea să nu fie cea mai bună opțiune, deoarece istoricul commit-ului poate fi încă accesibil prin diferite mijloace, cum ar fi copiile stocate în cache pe GitHub sau alte sisteme distribuite. Cel mai sigur lucru de făcut într-o astfel de situație este să presupunem că cheia dvs. secretă este deja compromisă.
Ar trebui să generați o nouă cheie secretă pentru a o înlocui pe cea compromisă și a o proteja prin utilizarea variabilelor de mediu. În orice caz, ar trebui să învățați cum să generați o nouă cheie secretă în Django pentru a vă proteja aplicația de lucruri precum Atacurile de falsificare a cererilor între site-uri (CSRF)..
Cum se generează o nouă cheie secretă în Django
Django oferă o funcție numită get_random_secret_key() care vă ajută să generați o nouă cheie secretă ori de câte ori o apelați. Funcția get_random_secret_key() este o funcție de utilitate care utilizează secrete modul în Python pentru a genera o cheie secretă sigură de 50 de caractere.
Pentru a genera o nouă cheie secretă cu funcția get_random_secret_key(), deschideți Interfață de linie de comandă (CLI) și tastați această comandă:
python manage.py shell -c „din django.core.management.utils import get_random_secret_key; print (get_random_secret_key())"
Comanda de mai sus importă funcția get_random_secret_key() din django.core.management.utils apoi tipărește o nouă cheie secretă de 50 de caractere, pe care o poți folosi în proiectul tău. Înainte de a rula comanda de mai sus, asigurați-vă că vă aflați în directorul rădăcină al proiectului dvs., adică în aceeași locație ca și gestionează.py fișier în proiectul dvs.
Puteți rula aceeași comandă în afara CLI creând un fișier Python și lipind acest fragment de cod în el:
# importați funcția get_random_secret_key().
din django.core.management.utils import get_random_secret_key
cheie_secretă = get_random_secret_key()
imprimare (cheie_secretă)
Puteți rula codul tastând acest lucru în CLI:
python fileName.py
Comanda de mai sus ar trebui să imprime o nouă cheie secretă de 50 de caractere pe care o puteți folosi în proiectul dvs.
Cum să vă protejați cheia secretă cu variabile de mediu
Probabil că nu doriți să vă schimbați cheia secretă de fiecare dată când faceți o comitere GitHub. O modalitate eficientă de a vă păstra cheia secretă în siguranță este stocarea acesteia într-o variabilă de mediu. Variabilele de mediu sunt valori pe care le puteți seta în afara bazei de cod, pe care programul dvs. le poate accesa în timpul rulării. Ele pot stoca configurația, cheile API, acreditările bazei de date etc.
Puteți stoca variabilele de mediu într-un fișier numit .env și le puteți exclude din depozitul dvs. git. Puteți face acest lucru creând un fișier numit .gitignore în proiectul tău. Fișierul .gitignore conține o listă de fișiere și foldere pe care Git nu le va urmări.
Tipurile de fișiere și structurile de directoare variază de la proiect la proiect, dar există valori implicite sensibile pe care le puteți aplica pentru fiecare limbă. Puteți găsi o listă de șabloane .gitignore în Depozitul gitignore al GitHub. Următorii pași vă arată cum să utilizați fișierul .gitignore cu variabilele de mediu în Django.
1. Creați un fișier .gitignore
În directorul de bază — locația dvs gestionează.py fișier—creați un .gitignore fișier și copiați conținutul acestuia Fișierul GitHub în ea. Fișierul respectiv este un exemplu .gitignore pentru proiectele Python, care exclude fișierele comune pe care nu le veți dori în depozitul dvs.
Alternativ, puteți adăuga un fișier .gitignore la proiectul dvs. în timp ce creați un depozit pe GitHub. Pentru a face acest lucru, faceți clic pe Adăugați .gitignore opțiunea, căutați Python și selectați-l.
2. Creați un fișier .env
În directorul de bază, creați un fișier numit .env. Acest fișier va stoca toate variabilele de mediu. Copiați și inserați cheia dvs. secretă în acest fișier (eliminați ghilimele și spațiile din jurul acestuia). Iată un exemplu:
SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%
Deschide .gitignore fișier și confirmați că .env numele fișierului este în el. Dacă nu este, îl puteți adăuga scriind singur numele fișierului pe o linie:
.env
3. Instalați pachetul python-dotenv
Deschideți CLI și instalați python-dotenv pachet ca o dependență.
pip install python-dotenv
4. Modificați fișierul settings.py
În dumneavoastră setări.py fișier, importați următoarele pachete:
import os
din dotenv import load_dotenv
Apoi, încărcați variabilele de mediu din dvs .env fișier în dvs setări.py fișier apelând la load_dotenv() funcţie:
load_dotenv()
În sfârșit, înlocuiți-vă CHEIE SECRETA variabilă cu această linie de cod:
SECRET_KEY = os.environ.get('CHEIE SECRETA')
Puteți rula serverul de dezvoltare pentru a confirma că configurația de mai sus funcționează. Dacă se întâmplă, proiectul dvs. ar trebui să ruleze așa cum v-ați aștepta. Comanda de mai jos va porni serverul de dezvoltare.
python manage.py runserver
Păstrați-vă cheia secretă în siguranță cu variabilele de mediu
Expunerea cheii dvs. secrete poate cauza multe probleme pentru dvs. ca dezvoltator. Este posibil să nu vă puteți recupera întotdeauna proiectul dintr-un atac, mai ales într-un mediu de producție.
Pentru a preveni aceste efecte secundare negative, stocați întotdeauna cheia secretă într-o variabilă de mediu și utilizați a .gitignore fișier pentru a-l ține departe de depozitul tău git.