Udržiavanie vašich súkromných kľúčov mimo úložísk kódu je nevyhnutné pre bezpečnosť. Zistite, ako to urobiť a ako sa zotaviť, ak ste už urobili chybu.
V Django hrá tajný kľúč zásadnú úlohu pri zvyšovaní bezpečnosti vašej aplikácie. Pomáha spravovať používateľské relácie, chráni pred útokmi CSRF (Cross-Site Request Forgery) a okrem iného chráni vaše údaje generovaním a overovaním kryptografických podpisov.
Tajný kľúč projektu by ste mali mať vždy v bezpečí. Ak ho odhalíte, vaša aplikácia bude náchylná na škodlivé útoky hackerov, čo ohrozí jej bezpečnosť. Ak dôjde k ohrozeniu vášho tajného kľúča, mali by ste vedieť, ako vygenerovať nový, aby ste znížili negatívny vplyv na vašu aplikáciu.
Ako môže byť váš tajný kľúč Django odhalený?
Svoj tajný kľúč Django môžete náhodne zverejniť, ak ho nevedomky zadáte do git alebo podobného úložiska zdrojového kódu. Táto chyba je bežná medzi novými programátormi, ktorí sú stále dozvedieť sa o GitHub. Keď sa to stane, môžete urobiť jednu z nasledujúcich akcií:
- Odstrániť odovzdanie.
- Úplne vymeňte tajný kľúč.
Odstránenie odovzdania nemusí byť najlepšou voľbou, pretože história odovzdania môže byť stále prístupná rôznymi spôsobmi, ako sú kópie uložené vo vyrovnávacej pamäti na GitHub alebo iných distribuovaných systémoch. Najbezpečnejšia vec, ktorú môžete v takejto situácii urobiť, je predpokladať, že váš tajný kľúč je už ohrozený.
Mali by ste vygenerovať nový tajný kľúč, ktorý nahradí napadnutý kľúč a ochráni ho pomocou premenných prostredia. V každom prípade by ste sa mali naučiť, ako vygenerovať nový tajný kľúč v Django, aby ste ochránili svoju aplikáciu pred vecami ako Cross-Site Request Forgery (CSRF) útoky.
Ako vygenerovať nový tajný kľúč v Django
Django poskytuje funkciu tzv get_random_secret_key() ktorý vám pomôže vygenerovať nový tajný kľúč, kedykoľvek ho zavoláte. Funkcia get_random_secret_key() je pomocná funkcia, ktorá používa tajomstvá modul v Pythone na vygenerovanie bezpečného tajného kľúča s dĺžkou 50 znakov.
Ak chcete vygenerovať nový tajný kľúč pomocou funkcie get_random_secret_key(), otvorte svoj Rozhranie príkazového riadka (CLI) a zadajte tento príkaz:
python manage.py shell -c "z django.core.management.utils import get_random_secret_key; vytlačiť (get_random_secret_key())“
Vyššie uvedený príkaz importuje funkciu get_random_secret_key() z django.core.management.utils a potom vytlačí nový tajný kľúč s 50 znakmi, ktorý môžete použiť vo svojom projekte. Pred spustením vyššie uvedeného príkazu sa uistite, že ste v koreňovom adresári svojho projektu, t. j. na rovnakom mieste ako spravovať.py súbor vo vašom projekte.
Rovnaký príkaz môžete spustiť mimo CLI vytvorením súboru Python a vložením tohto útržku kódu do neho:
# import funkcie get_random_secret_key().
od django.core.management.utils importovať get_random_secret_key
tajný_kľúč = get_random_secret_key()
vytlačiť (tajný_kľúč)
Kód môžete spustiť zadaním tohto príkazu do CLI:
python fileName.py
Vyššie uvedený príkaz by mal vytlačiť nový tajný kľúč s 50 znakmi, ktorý môžete použiť vo svojom projekte.
Ako chrániť svoj tajný kľúč pomocou premenných prostredia
Pravdepodobne nebudete chcieť meniť svoj tajný kľúč zakaždým, keď vykonáte príkaz GitHub. Efektívny spôsob, ako udržať svoj tajný kľúč v bezpečí, je uložiť ho do premennej prostredia. Premenné prostredia sú hodnoty, ktoré môžete nastaviť mimo svojej kódovej základne, ku ktorým má váš program stále prístup počas behu. Môžu ukladať konfiguráciu, kľúče API, poverenia databázy atď.
Premenné prostredia môžete uložiť do súboru s názvom .env a vylúčiť ich zo svojho úložiska git. Môžete to urobiť vytvorením súboru s názvom .gitignore vo vašom projekte. Súbor .gitignore obsahuje zoznam súborov a priečinkov, ktoré Git nebude sledovať.
Typy súborov a adresárové štruktúry sa líšia od projektu k projektu, existujú však rozumné predvolené hodnoty, ktoré môžete použiť pre každý jazyk. Zoznam šablón .gitignore nájdete v Úložisko gitignore GitHub. Nasledujúce kroky vám ukážu, ako používať súbor .gitignore s premennými prostredia v Django.
1. Vytvorte súbor .gitignore
Vo vašom základnom adresári – umiestnenie vášho spravovať.py súbor – vytvorte a .gitignore súbor a skopírujte jeho obsah súbor GitHub do toho. Tento súbor je vzorový súbor .gitignore pre projekty Python, ktorý vylučuje bežné súbory, ktoré nechcete mať vo svojom úložisku.
Prípadne môžete do projektu pridať súbor .gitignore pri vytváraní úložiska na GitHub. Ak to chcete urobiť, kliknite na Pridajte .gitignore možnosť, vyhľadajte Python a vyberte ho.
2. Vytvorte súbor .env
Vo svojom základnom adresári vytvorte súbor s názvom .env. Tento súbor bude uchovávať všetky vaše premenné prostredia. Skopírujte a prilepte svoj tajný kľúč do tohto súboru (odstráňte úvodzovky a medzery okolo neho). Tu je príklad:
SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%
Otvor .gitignore súbor a potvrďte, že .env názov súboru je v ňom. Ak nie je, môžete ho pridať napísaním samotného názvu súboru na riadok:
.env
3. Nainštalujte balík python-dotenv
Otvorte CLI a nainštalujte python-dotenv balík ako závislosť.
pip install python-dotenv
4. Upravte súbor settings.py
V tvojom settings.py súbor, importujte nasledujúce balíky:
importovať os
od dotenv importovať load_dotenv
Ďalej načítajte premenné prostredia z vášho .env súbor do svojho settings.py súbor zavolaním na load_dotenv() funkcia:
load_dotenv()
Nakoniec vymeňte svoj SECRET_KEY premenná s týmto riadkom kódu:
SECRET_KEY = os.environ.get(„SECRET_KEY“)
Môžete spustiť svoj vývojový server a potvrdiť, že konfigurácia uvedená vyššie funguje. Ak áno, váš projekt by mal fungovať tak, ako by ste očakávali. Príkaz nižšie spustí váš vývojový server.
runserver python manage.py
Udržujte svoj tajný kľúč v bezpečí s premennými prostredia
Odhalenie tajného kľúča vám ako vývojárovi môže spôsobiť veľa problémov. Možno nie vždy budete môcť obnoviť svoj projekt z útoku, najmä v produkčnom prostredí.
Aby ste predišli týmto negatívnym vedľajším účinkom, vždy uložte svoj tajný kľúč do premennej prostredia a použite a .gitignore súbor, aby ste ho udržali mimo vášho úložiska git.