Com generar una nova clau secreta a Django

Com generar una nova clau secreta a Django
Lectors com tu ajuden a donar suport a MUO. Quan feu una compra mitjançant enllaços al nostre lloc, podem guanyar una comissió d'afiliats. Llegeix més.

A Django, una clau secreta juga un paper vital per millorar la seguretat de la vostra aplicació. Ajuda a gestionar les sessions d'usuari, protegeix contra els atacs de falsificació de sol·licituds entre llocs (CSRF) i protegeix les vostres dades generant i verificant signatures criptogràfiques, entre altres coses.





MAKEUSEO VÍDEO DEL DIA DESPLACEU PER CONTINUAR AMB EL CONTINGUT

Heu de mantenir la clau secreta del vostre projecte segura en tot moment. Exposar-lo deixarà la vostra aplicació susceptible a atacs maliciosos per part de pirates informàtics, cosa que compromet la seva seguretat. Si la vostra clau secreta es veu compromesa, hauríeu de saber com generar-ne una de nova per reduir l'impacte negatiu a la vostra aplicació.





Com es pot exposar la vostra clau secreta de Django?

Podeu fer pública la vostra clau secreta de Django accidentalment si sense saber-ho, la comprometeu a git o a un dipòsit de codi font similar. Aquest error és comú entre els nous programadors que encara ho són aprendre sobre GitHub . Quan succeeixi, podeu fer una de les accions següents:





  1. Suprimeix el commit.
  2. Substituïu completament la clau secreta.

És possible que suprimir la confirmació no sigui la millor opció perquè encara es pot accedir a l'historial de commits per diversos mitjans, com ara còpies emmagatzemades a la memòria cau a GitHub o altres sistemes distribuïts. El més segur que es pot fer en aquesta situació és assumir que la vostra clau secreta ja està compromesa.

Hauríeu de generar una nova clau secreta per substituir la compromesa i protegir-la mitjançant variables d'entorn. En qualsevol cas, hauríeu d'aprendre a generar una nova clau secreta a Django per protegir la vostra aplicació de coses com ara Atacs de falsificació de sol·licituds entre llocs (CSRF). .



Com generar una nova clau secreta a Django

Django proporciona una funció anomenada get_random_secret_key() que us ajuda a generar una nova clau secreta sempre que la truqueu. La funció get_random_secret_key() és una funció d'utilitat que utilitza la funció secrets mòdul a Python per generar una clau secreta segura de 50 caràcters.

Per generar una nova clau secreta amb la funció get_random_secret_key(), obriu el vostre Interfície de línia d'ordres (CLI) i escriviu aquesta comanda:





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

L'ordre anterior importa la funció get_random_secret_key() de django.core.management.utils i després imprimeix una nova clau secreta de 50 caràcters, que podeu utilitzar al vostre projecte. Abans d'executar l'ordre anterior, assegureu-vos que esteu al directori arrel del vostre projecte, és a dir, a la mateixa ubicació que el manage.py fitxer al vostre projecte.

Podeu executar la mateixa ordre fora de la vostra CLI creant un fitxer Python i enganxant-hi aquest fragment de codi:





 # import the get_random_secret_key() function 
from django.core.management.utils import get_random_secret_key

secret_key = get_random_secret_key()
print(secret_key)

Podeu executar el codi escrivint això a la vostra CLI:

 python fileName.py 

L'ordre anterior hauria d'imprimir una nova clau secreta de 50 caràcters que podeu utilitzar al vostre projecte.

Com protegir la vostra clau secreta amb variables d'entorn

Probablement no vulgueu canviar la vostra clau secreta cada vegada que feu una confirmació de GitHub. Una manera eficient de mantenir la vostra clau secreta segura és emmagatzemar-la en una variable d'entorn. Les variables d'entorn són valors que podeu establir fora de la vostra base de codi, als quals el vostre programa encara pot accedir durant el temps d'execució. Poden emmagatzemar configuració, claus API, credencials de base de dades, etc.

Podeu emmagatzemar les vostres variables d'entorn en un fitxer anomenat .env i excloure-les del vostre repositori git. Podeu fer-ho creant un fitxer anomenat .gitignore en el teu projecte. El fitxer .gitignore conté una llista de fitxers i carpetes que Git no farà un seguiment.

Els tipus de fitxers i les estructures de directoris varien d'un projecte a un altre, però hi ha valors per defecte que podeu aplicar per a cada idioma. Podeu trobar una llista de plantilles .gitignore a El repositori gitignore de GitHub . Els passos següents us mostren com utilitzar el fitxer .gitignore amb variables d'entorn a Django.

1. Creeu un fitxer .gitignore

Al vostre directori base: la ubicació del vostre manage.py fitxer—crear a .gitignore arxivar i copiar-ne el contingut Fitxer GitHub dins de. Aquest fitxer és un .gitignore de mostra per a projectes Python que exclou els fitxers comuns que no voldreu al vostre dipòsit.

Alternativament, podeu afegir un fitxer .gitignore al vostre projecte mentre creeu un dipòsit a GitHub. Per fer-ho, feu clic a Afegeix .gitignore opció, cerqueu Python i seleccioneu-lo.

  afegint una plantilla Python .gitignore a github

2. Creeu un fitxer .env

Al vostre directori base, creeu un fitxer anomenat .env . Aquest fitxer emmagatzemarà totes les variables d'entorn. Copieu i enganxeu la vostra clau secreta en aquest fitxer (elimineu les cometes i els espais al voltant). Aquí teniu un exemple:

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

Obriu el .gitignore fitxer i confirmeu que .env el nom del fitxer hi és. Si no ho és, podeu afegir-lo escrivint el nom del fitxer per si mateix en una línia:

 .env 

3. Instal·leu el paquet python-dotenv

Obriu la vostra CLI i instal·leu el python-dotenv paquet com a dependència.

 pip install python-dotenv 

  instal·lant el paquet python-dotenv

4. Modifiqueu el vostre fitxer settings.py

En el teu settings.py fitxer, importeu els paquets següents:

 import os 
from dotenv import load_dotenv

A continuació, carregueu les variables d'entorn del vostre .env fitxer al vostre settings.py fitxer trucant al load_dotenv() funció:

 load_dotenv() 

Finalment, substituïu el vostre SECRET_KEY variable amb aquesta línia de codi:

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

Podeu executar el vostre servidor de desenvolupament per confirmar que la configuració anterior funciona. Si ho fa, el vostre projecte s'hauria de funcionar com esperíeu. L'ordre següent iniciarà el vostre servidor de desenvolupament.

el meu controlador Xbox One no funcionarà
 python manage.py runserver 

Manteniu la vostra clau secreta segura amb les variables d'entorn

Exposar la vostra clau secreta us pot causar molts problemes com a desenvolupador. És possible que no sempre pugueu recuperar el vostre projecte d'un atac, especialment en un entorn de producció.

Per evitar aquests efectes secundaris negatius, emmagatzemeu sempre la vostra clau secreta en una variable d'entorn i utilitzeu a .gitignore fitxer per mantenir-lo fora del vostre repositori git.