mots de passe...

mots de passe... - PHP - Programmation

Marsh Posté le 23-04-2003 à 22:19:09    

voilà, je compte faire un nouveau module avec une gestion de membres la plus sécurisée possible.... je travaille avec une db mysql et je code en php... j'aimerais me renseigner sur les possibilités pour coder des mots de passe, comment faire pour que ce soit le plus sur???? hum c'est une question po très précise, mais je n'y connais rien à ce niveau, alors si qq'un pouvait m'aiguiller, ce serait génial ;)


Message édité par Psykolio le 23-04-2003 à 22:19:21

---------------
-----------------------------------
Reply

Marsh Posté le 23-04-2003 à 22:19:09   

Reply

Marsh Posté le 23-04-2003 à 22:20:09    

Recherche un peu dans le forum, le sujet a été abordé plusieurs fois.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 23-04-2003 à 22:31:27    

possibilité de codage avec la fonction crypt(); et possibilité d'ajouter un grain de sel pour compliquer la chose ... c'est le cryptage DES utilisé pour les compte utilisateur sous Linux.
C'est déjà costaud.
 
tu as aussi la possibilité de crypter avec md5() et mcrypt() il me semble mais je crois qu'il faut compiler apache avec les modules --enabled  [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 23-04-2003 à 22:35:54    

ok merci bcp, je vais chercher de la doc sur tt ça... :)


---------------
-----------------------------------
Reply

Marsh Posté le 24-04-2003 à 01:10:44    

Et si tu veux que ca soit vraiment sécurisé, il faut que personne ne puisse retrouver le code en clair.
Pour ça, il y a passwd de mysql (ou la fonction équivalente dans les autres bases de donnée) tu lui donnes le mot en clair et ca retourne la valeur corespondante. (pas d'algorythme de décryptage donc impossible de retrouver la valeur de départ a par par la force brupte en testant toutes les valeurs initiale possible jusqu'à tombé sur le même ensemble dde cractère une fois codé)
Pour tester la validité du mot de passe saisie par un visiteur, il faut le coder avec la même fonction et comparé les deux valeurs codées.
Attention, cette fonction s'utilise dans une requête sql et non pas directement dans le php.
 
Pour que l'ensemble soit sécurisé, il faut aussi utilisé ssl entre le serveur et le navigateur.

Reply

Marsh Posté le 24-04-2003 à 10:46:50    

omega2 a écrit :


 
pas d'algorythme de décryptage  


 
faudrait m'expliquer comment ça marche alors :??: , c'est pas aléatoire non plus sinon ça serait pas très pratique :heink:


Message édité par Master_Jul le 24-04-2003 à 10:48:15
Reply

Marsh Posté le 24-04-2003 à 10:59:06    

omega2 a écrit :

Et si tu veux que ca soit vraiment sécurisé, il faut que personne ne puisse retrouver le code en clair.
Pour ça, il y a passwd de mysql (ou la fonction équivalente dans les autres bases de donnée) tu lui donnes le mot en clair et ca retourne la valeur corespondante. (pas d'algorythme de décryptage donc impossible de retrouver la valeur de départ a par par la force brupte en testant toutes les valeurs initiale possible jusqu'à tombé sur le même ensemble dde cractère une fois codé)
Pour tester la validité du mot de passe saisie par un visiteur, il faut le coder avec la même fonction et comparé les deux valeurs codées.


 
crypt() fonctionne exactement de la même manière  ;)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-04-2003 à 10:59:18    

Ca utilise des fonctions à sens unique.
 
Exemple de fonction à sens unique : Modulo.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 24-04-2003 à 11:39:51    

simogeo a écrit :


 
crypt() fonctionne exactement de la même manière  ;)  

Je savais pas ça. ;)
Comme sur mon site, j'ai toujours utilisé la fonction de mysql, j'ai pas trop regardé les niveaux de sécurité qu'il y avait a côté. ;)
Tiens faire un passwd d'un crypt(), ca pourait être marrant. lol :)

Reply

Marsh Posté le 24-04-2003 à 12:23:58    

Citation :

Tiens faire un passwd d'un crypt(), ca pourait être marrant. lol :)


 
j'y ai pensé héhé... mais bon, e suis po sur que ce soit très utile :??:  :) .... euh dites moi, j'ai lu que vbulletin et phpbb utilisent du md5(), c'est mieux que faire un crypt() ou po???? en fait c'est quoi exactement la différence??


Message édité par Psykolio le 24-04-2003 à 12:24:47

---------------
-----------------------------------
Reply

Marsh Posté le 24-04-2003 à 12:23:58   

Reply

Marsh Posté le 24-04-2003 à 13:08:51    

Psykolio a écrit :

Citation :

Tiens faire un passwd d'un crypt(), ca pourait être marrant. lol :)


 
j'y ai pensé héhé... mais bon, e suis po sur que ce soit très utile :??:  :) .... euh dites moi, j'ai lu que vbulletin et phpbb utilisent du md5(), c'est mieux que faire un crypt() ou po???? en fait c'est quoi exactement la différence??


 
dis toi que si UNIX utilises crypt() c'est que ca tient déjà bien la route ..... fais un crypt() récursif si ca te chantes .... mais l'interêt me semble super limité  [:southpark1]  
 
tu as la main sur le serveur ? tu es sur qu'apache est compilé avec le support md5 pour pouvoir l'utliser ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-04-2003 à 13:57:37    

Tiré du manuel :
 

Citation :

crypt
(PHP 3, PHP 4 )
 
crypt -- Chiffrage indéchiffrable (hashing)
Description
string crypt ( string str [, string salt])
 
 
crypt() retourne la chaîne str chiffrée avec l'algorithme standard Unix DES, ou bien un des algorithme qui est disponible sur la machine. L'argument optionnel salt sera utilisée comme base pour le chiffrement. Reportez vous aux pages de manuel Unix pour plus de détails sur votre fonction crypt.  
 
Si l'argument salt n'est pas fourni, PHP en générera un lui-même.  
 
Certains systèmes supoprtent plus d'un type de chiffrage. En fait, il arrive que le chiffrage DES standard soit remplacé par un algorithme de chiffrage MD5. Le choix du type de chiffrage est effectué en se basant sur la valeur du salt. A l'installation, PHP détermine les possibitilités de la fonction crypt(), et acceptera des salt pour d'autres types de chiffrages. Is aucun salt n'est fourni, PHP va en générer un de deux caractères, à moins que le système par défaut soit MD5, auquel cas un salt compatible MD5 sera généré. PHP définit une constante appelée CRYPT_SALT_LENGTH qui vous dira si un salt de deux caractères s'applique à votre système, ou bien si c'est un salt de 12 caractères.  
 
Si vous utiilsez le salt généré, pensez bien que le salt est généré une seule fois. Si vous appelez cette fonction récursivement, cela peut avoir des impacts sur la sécurité et l'apparence du résultat.


 
 
Exemple 1. Exemple avec crypt()
 

Code :
  1. <?php
  2. $mot_de_passe = crypt("MonM0TdEPa&&e" );
  3. // laissons le salt initialisé par PHP
  4. /*
  5.   Il vaut mieux passer le résultat complet de crypt() comme salt nécessaire
  6.   pour le chiffrage du mot de passe, pour éviter les problèmes entre les
  7.   algorithmes utilisés (comme nous le disons ci-dessus, le chiffrage
  8.   standard DES utilise un salt de 2 caractères, mais un chiffrement  
  9.   MD5 utilise un salt de 12.
  10. */
  11. if (crypt($utilisateur_input,$mot_de_passe_input) == $mot_de_passe) {
  12.    echo "Mot de passe correct!";
  13. }
  14. ?>

 
 

Reply

Marsh Posté le 24-04-2003 à 14:00:28    

si qqun pouvait d'ailleurs m expliquer le crypt "machin,truc" j'ai pas compris pourquoi on crypte 2 choses pour les comparer au mot de passe crypté

Reply

Marsh Posté le 24-04-2003 à 14:05:24    

Master_Jul a écrit :

si qqun pouvait d'ailleurs m expliquer le crypt "machin,truc" j'ai pas compris pourquoi on crypte 2 choses pour les comparer au mot de passe crypté


 
crypt(mot_a_crypter, grain_de_sel);
 
le deuxième est le grain de sel, une sorte de clef que l'on ajoute au codage. Si elle n'est pas préciser, php en génére une automatiquement me semble t'il.  :)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-04-2003 à 14:05:26    

Master_Jul a écrit :

si qqun pouvait d'ailleurs m expliquer le crypt "machin,truc" j'ai pas compris pourquoi on crypte 2 choses pour les comparer au mot de passe crypté


Bin crypt() est un cryptage irréversible. Bon. Mais il crypte toute le temps de la même façon, donc l'idée c'est de crypter ce qu'entre l'utilisateur avec le résultat qui est en base ; si les deux cryptages sont les mêmes c'est que le mot de passe entré est correct (peut-être à un modulo près, mais comme je connais pas l'algo de crypt(), je m'avancerai pas).
Le deuxième argument est le salt. Je ne connais pas bien ce concept donc je ne vais pas me lancer dans des trucs trop hasardeux ; je crois que c'est en fait une variable qui te permet de générer des cryptages différents pour une même chaîne. Mais franchement, je suis pas sûr [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 24-04-2003 à 14:09:14    

Taiche a écrit :


 
Le deuxième argument est le salt. Je ne connais pas bien ce concept donc je ne vais pas me lancer dans des trucs trop hasardeux ; je crois que c'est en fait une variable qui te permet de générer des cryptages différents pour une même chaîne. Mais franchement, je suis pas sûr [:spamafote]
 


 
 [:tomilou] c'est tout à fait cela......et le grain de sel se retrouve dans le mot de passe crypté.
 
 
 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 24-04-2003 à 14:10:21    

simogeo a écrit :


 [:tomilou] c'est tout à fait cela......et le grain de sel se retrouve dans le mot de passe crypté.


 :jap:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 24-04-2003 à 15:11:03    

oki merci mais alors dans l'exemple ça marchera pas puisque le mot de passe de référence n'a pas été crypté avec le sel ?!


Message édité par Master_Jul le 24-04-2003 à 15:11:14
Reply

Marsh Posté le 24-04-2003 à 15:25:45    

Master_Jul a écrit :

oki merci mais alors dans l'exemple ça marchera pas puisque le mot de passe de référence n'a pas été crypté avec le sel ?!


 
tout à fait  :jap:  
 

Code :
  1. <?php
  2.   // on définit le grain de sel
  3.   define (SALT, "rt" );
  4.   $crypt_password = crypt("password", SALT); 
  5.   // stockage de $crypt_password dans la base de données ou fichier
  6.   // test après loggage de l'utilisateur
  7.   if (crypt($utilisateur_input, SALT) == $crypt_password ) {
  8.        echo "Mot de passe correct!";
  9.   } else echo ("marche pô !" );
  10.   ?>


 
 :)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 25-04-2003 à 01:17:32    

merci bien simogeo  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed