Yksityisten avainten pitäminen poissa koodivarastoista on turvallisuuden kannalta elintärkeää. Ota selvää, miten voit tehdä sen ja miten voit toipua, jos olet jo tehnyt virheen.

Djangossa salaisella avaimella on tärkeä rooli sovelluksesi turvallisuuden parantamisessa. Se auttaa hallitsemaan käyttäjien istuntoja, suojaa Cross-Site Request Forgery (CSRF) -hyökkäyksiltä ja suojaa tietosi muun muassa luomalla ja tarkistamalla kryptografisia allekirjoituksia.

Sinun tulee pitää projektisi salainen avain aina turvassa. Sen paljastaminen jättää sovelluksesi alttiiksi hakkereiden haitallisille hyökkäyksille, mikä vaarantaa sen turvallisuuden. Jos salainen avaimesi vaarantuu, sinun tulee tietää, miten voit luoda uuden, jotta voit vähentää kielteisiä vaikutuksia sovellukseesi.

Kuinka Django-salainen avaimesi voidaan paljastaa?

Voit vahingossa tehdä Django-salaisesta avaimesta julkisen, jos sitoutat sen tietämättäsi gitiin tai vastaavaan lähdekoodivarastoon. Tämä virhe on yleinen uusien ohjelmoijien keskuudessa, jotka ovat edelleen oppia GitHubista. Kun se tapahtuu, voit tehdä jonkin seuraavista:

instagram viewer
  1. Poista sitoumus.
  2. Vaihda salainen avain kokonaan.

Toimituksen poistaminen ei ehkä ole paras vaihtoehto, koska toimitushistoriaa voidaan silti käyttää useilla eri tavoilla, kuten välimuistikopioilla GitHubissa tai muissa hajautetuissa järjestelmissä. Turvallisinta tällaisessa tilanteessa on olettaa, että salainen avaimesi on jo vaarantunut.

Sinun tulee luoda uusi salainen avain vaarantuneen tilalle ja suojata se käyttämällä ympäristömuuttujia. Joka tapauksessa sinun tulee oppia luomaan uusi salainen avain Djangossa suojaamaan sovellustasi mm Cross-Site Request Forgery (CSRF) -hyökkäykset.

Kuinka luoda uusi salainen avain Djangossa

Django tarjoaa toiminnon nimeltä get_random_secret_key() joka auttaa sinua luomaan uuden salaisen avaimen aina kun soitat sitä. Get_random_secret_key()-funktio on aputoiminto, joka käyttää salaisuuksia moduuli Pythonissa luomaan 50 merkin suojatun salaisen avaimen.

Luo uusi salainen avain get_random_secret_key()-funktiolla avaamalla Command Line Interface (CLI) ja kirjoita tämä komento:

python manager.py -kuori -c "osoitteesta django.core.management.utils import get_random_secret_key; tulosta (get_random_secret_key())"

Yllä oleva komento tuo get_random_secret_key()-funktion kohteesta django.core.management.utils ja tulostaa sitten uuden 50 merkin salaisen avaimen, jota voit käyttää projektissasi. Ennen kuin suoritat yllä olevan komennon, varmista, että olet projektisi juurihakemistossa, eli samassa paikassa kuin manager.py tiedosto projektiisi.

Voit suorittaa saman komennon CLI: n ulkopuolella luomalla Python-tiedoston ja liittämällä siihen tämän koodinpätkän:

# tuo get_random_secret_key()-funktio
alkaen django.core.management.utils tuonti get_random_secret_key

salainen_avain = hanki_satunnainen_salainen_avain()
tulosta (salainen_avain)

Voit suorittaa koodin kirjoittamalla tämän CLI: hen:

python-tiedostonnimi.py

Yllä olevan komennon pitäisi tulostaa uusi 50 merkin salainen avain, jota voit käyttää projektissasi.

Kuinka suojata salainen avaimesi ympäristömuuttujilla

Et todennäköisesti halua vaihtaa salaista avaintasi joka kerta, kun teet GitHub-sitoumuksen. Tehokas tapa pitää salainen avaimesi turvassa on tallentaa se ympäristömuuttujaan. Ympäristömuuttujat ovat arvoja, jotka voit asettaa koodikannan ulkopuolelle ja joita ohjelmasi voi edelleen käyttää ajon aikana. Ne voivat tallentaa kokoonpanon, API-avaimia, tietokannan valtuustietoja jne.

Voit tallentaa ympäristömuuttujasi .env-nimiseen tiedostoon ja sulkea ne pois git-arkistostasi. Voit tehdä tämän luomalla tiedoston nimeltä .gitignore projektissasi. .gitignore-tiedosto sisältää luettelon tiedostoista ja kansioista, joita Git ei seuraa.

Tiedostotyypit ja hakemistorakenteet vaihtelevat projekteittain, mutta jokaiselle kielelle on olemassa järkeviä oletusasetuksia. Löydät luettelon .gitignore-malleista GitHubin gitignore-arkisto. Seuraavat vaiheet osoittavat, kuinka .gitignore-tiedostoa käytetään ympäristömuuttujien kanssa Djangossa.

1. Luo .gitignore-tiedosto

Perushakemistossasi – sijaintisi manager.py tiedosto – luo a .gitignore tiedosto ja kopioi tämän sisältö GitHub-tiedosto siihen. Tämä tiedosto on Python-projektien esimerkki .gitignore, joka sulkee pois yleiset tiedostot, joita et halua arkistoon.

Vaihtoehtoisesti voit lisätä projektiisi .gitignore-tiedoston luodessasi arkiston GitHubissa. Voit tehdä sen napsauttamalla Lisää .gitignore -vaihtoehto, etsi Python ja valitse se.

2. Luo .env-tiedosto

Luo perushakemistoosi tiedosto nimeltä .env. Tämä tiedosto tallentaa kaikki ympäristömuuttujasi. Kopioi ja liitä salainen avaimesi tähän tiedostoon (poista lainausmerkit ja välilyönnit sen ympäriltä). Tässä on esimerkki:

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

Avaa .gitignore tiedosto ja vahvista, että .env tiedostonimi on siinä. Jos se ei ole, voit lisätä sen kirjoittamalla tiedostonimen riville:

.env

3. Asenna python-dotenv-paketti

Avaa CLI ja asenna python-dotenv paketti riippuvuutena.

pip asennus python-dotenv

4. Muokkaa settings.py-tiedostoa

Sinun settings.py tiedosto, tuo seuraavat paketit:

tuonti os
alkaen dotenv tuonti load_dotenv

Lataa seuraavaksi ympäristömuuttujat tietokoneeltasi .env tiedosto omaan settings.py tiedosto soittamalla load_dotenv() toiminto:

load_dotenv()

Vaihda lopuksi omasi SALAINEN AVAIN muuttuja tällä koodirivillä:

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

Voit suorittaa kehityspalvelimesi varmistaaksesi, että yllä oleva kokoonpano toimii. Jos näin käy, projektisi pitäisi toimia odotetulla tavalla. Alla oleva komento käynnistää kehityspalvelimesi.

python manage.py runserver

Pidä salainen avaimesi turvassa ympäristömuuttujien avulla

Salaisen avaimen paljastaminen voi aiheuttaa monia ongelmia sinulle kehittäjänä. Et välttämättä aina pysty palauttamaan projektiasi hyökkäyksestä, etenkään tuotantoympäristössä.

Välttääksesi nämä negatiiviset sivuvaikutukset, tallenna aina salainen avaimesi ympäristömuuttujaan ja käytä a .gitignore tiedosto pitääksesi sen poissa git-arkistostasi.