Accueil Technologie
Comment générer une nouvelle clé secrète dans Django

Comment générer une nouvelle clé secrète dans Django

Dans Django, une clé secrète joue un rôle essentiel dans l’amélioration de la sécurité de votre application. Elle aide à gérer les sessions utilisateur, protège contre les attaques de type Cross-Site Request Forgery (CSRF) et protège vos données en générant et en vérifiant les signatures cryptographiques, entre autres choses.



Vous devez toujours garder la clé secrète de votre projet en sécurité. En l’exposant, vous exposez votre application à des attaques malveillantes de la part de pirates, ce qui compromet sa sécurité. Si votre clé secrète est compromise, vous devez savoir comment en générer une nouvelle afin de réduire l’impact négatif sur votre application.


Comment votre clé secrète Django peut-elle être exposée ?

Vous pouvez accidentellement rendre publique votre clé secrète Django si vous la livrez sans le savoir à git ou à un dépôt de code source similaire. Cette erreur est fréquente chez les nouveaux programmeurs qui découvrent GitHub. Lorsque cela se produit, vous pouvez faire l’une des choses suivantes :

  1. Supprimer le commit.
  2. Remplacer entièrement la clé secrète.

La suppression du commit n’est pas forcément la meilleure option, car l’historique du commit peut toujours être accessible par divers moyens, comme des copies en cache sur GitHub ou d’autres systèmes distribués. La chose la plus sûre à faire dans une telle situation est de supposer que votre clé secrète est déjà compromise.

Vous devez générer une nouvelle clé secrète pour remplacer celle qui a été compromise et la protéger en utilisant des variables d’environnement. Dans tous les cas, vous devriez apprendre à générer une nouvelle clé secrète dans Django afin de protéger votre application contre les attaques de type Cross-Site Request Forgery (CSRF).


Comment générer une nouvelle clé secrète dans Django

Django fournit une fonction appelée get_random_secret_key() qui vous aide à générer une nouvelle clé secrète chaque fois que vous l’appelez. La fonction get_random_secret_key() est une fonction utilitaire qui utilise la fonction secrets en Python pour générer une clé secrète sécurisée de 50 caractères.

Pour générer une nouvelle clé secrète avec la fonction get_random_secret_key(), ouvrez votre interface de ligne de commande (CLI) et tapez cette commande :

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

La commande ci-dessus importe la fonction get_random_secret_key() de l’application django.core.management.utils et imprime ensuite une nouvelle clé secrète de 50 caractères, que vous pouvez utiliser dans votre projet. Avant d’exécuter la commande ci-dessus, assurez-vous que vous êtes dans le répertoire racine de votre projet, c’est-à-dire au même endroit que le fichier manage.py dans votre projet.

Vous pouvez exécuter la même commande en dehors de votre CLI en créant un fichier Python et en y collant cet extrait de code :

 # 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)

Vous pouvez exécuter le code en tapant ceci dans votre CLI :

 python fileName.py

La commande ci-dessus devrait imprimer une nouvelle clé secrète de 50 caractères que vous pourrez utiliser dans votre projet.


Comment protéger votre clé secrète avec des variables d’environnement

Vous n’avez probablement pas envie de changer votre clé secrète à chaque fois que vous faites un commit GitHub. Un moyen efficace de garder votre clé secrète en sécurité est de la stocker dans une variable d’environnement. Les variables d’environnement sont des valeurs que vous pouvez définir en dehors de votre base de code, mais auxquelles votre programme peut toujours accéder pendant l’exécution. Elles peuvent stocker de la configuration, des clés d’API, des identifiants de base de données, etc.

Vous pouvez stocker vos variables d’environnement dans un fichier nommé .env et les exclure de votre dépôt git. Vous pouvez le faire en créant un fichier appelé .gitignore dans votre projet. Le fichier .gitignore contient une liste de fichiers et de dossiers que Git ne suivra pas.

Les types de fichiers et les structures de répertoires varient d’un projet à l’autre, mais il existe des valeurs par défaut raisonnables que vous pouvez appliquer pour chaque langue. Vous pouvez trouver une liste de modèles .gitignore dans le dépôt gitignore de GitHub. Les étapes suivantes vous montrent comment utiliser le fichier .gitignore avec des variables d’environnement dans Django.

1. Créer un fichier .gitignore

Dans votre répertoire de base – l’emplacement de votre manage.py créer un fichier .gitignore et copiez-y le contenu de ce fichier GitHub. Ce fichier est un exemple de .gitignore pour les projets Python qui exclut les fichiers communs que vous ne voudrez pas dans votre dépôt.

Vous pouvez également ajouter un fichier .gitignore à votre projet lors de la création d’un dépôt sur GitHub. Pour ce faire, cliquez sur l’icône Ajouter .gitignore rechercher Python et le sélectionner.

ajout d'un modèle .gitignore python sur github

2. Créer un fichier .env

Dans votre répertoire de base, créez un fichier appelé .env. Ce fichier stockera toutes vos variables d’environnement. Copiez et collez votre clé secrète dans ce fichier (supprimez les guillemets et les espaces qui l’entourent). Voici un exemple :

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

Ouvrez le fichier .gitignore et confirmez que le fichier .env est présent. Si ce n’est pas le cas, vous pouvez l’ajouter en écrivant le nom du fichier seul sur une ligne :

 .env

3. Installer le paquetage python-dotenv

Ouvrez votre CLI, et installez le paquet python-dotenv Le paquet python-dotenv a été ajouté comme dépendance.

 pip install python-dotenv

installation du paquet python-dotenv

4. Modifier le fichier settings.py

Dans votre fichier settings.py importez les paquets suivants :

 import os
from dotenv import load_dotenv

Ensuite, chargez les variables d’environnement de votre .env dans votre fichier settings.py en appelant la fonction load_dotenv() fonction :

 load_dotenv()

Enfin, remplacez votre SECRET_KEY avec cette ligne de code :

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

Vous pouvez exécuter votre serveur de développement pour confirmer que la configuration ci-dessus fonctionne. Si c’est le cas, votre projet devrait s’exécuter comme prévu. La commande ci-dessous démarre votre serveur de développement.

 python manage.py runserver

La sécurité de votre clé secrète grâce aux variables d’environnement

L’exposition de votre clé secrète peut vous poser de nombreux problèmes en tant que développeur. Vous ne serez pas toujours en mesure de récupérer votre projet après une attaque, en particulier dans un environnement de production.

Pour éviter ces effets secondaires négatifs, stockez toujours votre clé secrète dans une variable d’environnement et utilisez un fichier .gitignore pour le garder en dehors de votre dépôt git.

Leave your vote

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

Log In

Forgot password?

Don't have an account? Register

Forgot password?

Enter your account data and we will send you a link to reset your password.

Your password reset link appears to be invalid or expired.

Log in

Privacy Policy

Add to Collection

No Collections

Here you'll find all collections you've created before.

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x

Newsletter

inscrivez vous pour recevoir nos actualités

Actualités, astuces, bons plans et cadeaux !