page-translate

Code Igniter : protégez vos mots de passe !

Code Igniter / encryptage / mot de passe / sha1 / Web

Important: Nous venons de migrer d'un site Wordpress vers Drupal alors il se peut qu'il y ait des liens brisés, des images qui ne s'affichent pas ou encore du code mal formatté. Nous travaillons fort pour régler ces problèmes le plus tôt possible.

En développant avec Code Igniter, il est arrivé un moment où je devais mettre en place un système de login et mot de passe. Bien sûr, pour sécuriser le mot de passe, il faut le crypter dans la base de données. Pour cela, Code Igniter possède, de base, une méthode permettant ce genre d'opération : l'Encryption Class.

La première chose à faire est de créer une clé de cryptage qu'on enregistre dans le fichier config.php se trouvant dans le dossier applications de notre Code Igniter comme suit :
 $config['encryption_key'] = "YOUR KEY";
La clé doit être une suite de 32 caractères aléatoires, lettres et chiffres mélangés pour optimiser le cryptage.

Par la suite, en jetant un oeil sur la documentation, on observe plusieurs functions : ne tenez absolument pas compte des deux premières s'intitulant encode() et decode() ! C'est très important car la function encode() crypte bien le mot de passe mais permet aussi d'être décrypté avec la function decode(), ce qui représente un risque de sécurité important. Au lieu d'utiliser ces functions, on descend un peu dans la documentation pour répérer la function sha1(). C'est celle-ci que nous utiliserons, elle crypte le mot de passe en sha1 qui ne peut être décodé.

La documentation nous conseille d'utiliser la function PHP de base pour encrypter le mot de passe en sha1, si le serveur que l'on utilise le supporte (ce qui est le cas pour la plupart), et c'est ce que je vous recommande aussi. Sinon, nous utiliserons la function de Code Igniter comme suit :
$hash = $this->encrypt->sha1('Some string');
Il nous suffit par la suite d'enregistrer la valeur dans la base de données puis, si on veux comparer le mot de passe entré par l'utiliseur et celui en base de données, on a juste à utiliser la même fonction pour crypter la valeur entrée par l'utilisateur et de comparer les deux valeurs codées.

Ajouter un commentaire

CAPTCHA
Êtes-vous un robot ?
Image CAPTCHA
Écrivez le code apparaissant dans l'image.

Derniers articles