Sécuriser ses données
Toute programmation de plateforme web a forcément des données sensibles qu’il faut mettre en sécurité pour éviter les piratages. C’est une compétence à part entière, mais on peut, dès le début d’un projet, sécuriser le minimum !
Dans cette page tu trouveras :
Les variables d’environnement
Tout ce que l’on programme dans les fichiers de notre projet, peut être lu en inspectant le code source de la page. Cela pose problème si l’on insère par exemple directement la connexion de notre base de données, car il faut afficher son nom d’utilisateur et mot de passe. Pour éviter cela, il existe les variables d’environnement.
Une variable d’environnement permet par exemple, de programmer un mot de passe dans une variable. Et c’est cette variable que l’on va appeler dans notre code, afin de ne pas le mot de passe en dur et que personne ne puisse le trouver.
Outre les mots de passe, on peut utiliser les variables d’environnement pour stocker une session d’utilisateur, et toute autre donnée sensible.
Prenons l’exemple de notre base de données :
- Pour créer une variable d’environnement dans replit, on va utiliser l’outil Secrets
- Cela t’ouvre sur la fenêtre de droite, le panneau Secrets.Tu peux cliquer sur New Secret pour programme ta variable.
Tu peux configurer ta variable.
- Dans key : donne un nom à ta variable (celui que tu veux)
- Dans value : Tu vas mettre ton mot de passe, ou là par exemple, le lien de ta bdd contenant ton nom d’utilisateur et ton mot de passe.
Dans ton fichier main.py :
Tu peux maintenant appeler ta variable au lieu de mettre tes données sensibles comme ton mot de passe.
Crypter les mots de passe
Crypter un mot de passe veut dire « le coder » pour qu’il n’apparaisse pas en clair. On parle aussi de hachage de mot de passe.
Quand un utilisateur s’inscrit sur ton site, tu peux t’assurer de le protéger en programmant des mots de passe crypté afin que personne ne puisse les lire. Même pas toi en tant qu’administrateur ! Tu verras des mots de passe codés dans ta base de données
L’extension bcrypt
bcrypt est une extension de Flask permettant de faire un hachage de mot de passe automatique dès qu’un utilisateur s’enregistre par exemple. Il est facile à utiliser car il est préconçu pour, et tu vas voir ici comment l’utiliser.
Tout d’abord, tu dois importer bcrypt en haut de ton fichier python.
Tu vas utiliser la fonction bcrypt.hashpw(), qui prend 2 arguments :
- encode() qui va permettre de lui dire d’encoder en utf-8
- gensalt() qui va ajouter une chaine de caractères aléatoires afin que personne ne puisse décoder le hachage.
Si tu regardes le print() dans ta console, tu vois que ton mot de passe est maintenant crypté
Tu peux écrire la fonction bcrypt.hashpw() sur une seule ligne, en ajoutant directement ses arguments :