Tutoriel PHP : Text_Password

Un bon mot de passe est idéalement généré de manière aléatoire, composé de plus de 8 caractères et incluant lettres, chiffres et caractères spéciaux. Pour vos développements PHP, PEAR propose un package tout à fait adapté à la génération de mots de passe. Il s'agit du Package Text_Password.

Tutoriel Pear::Text_Password

Avant toute chose, vous devez installer le package Text_Password sur votre machine.

CODE:
  1. bash-2.05$ pear install Text_Password

Une fois le Package installé, vous devrez l'inclure dans chacun des fichiers PHP qui font appel aux fonctions de Text_Password. Dans la suite de ce tutoriel, nous admettrons ce fait afin d'éviter de polluer le code inutilement.

PHP:
  1. <?php
  2. // include du package Pear Text_Password
  3. require_once "Text/Password.php";
  4. ...
  5. ?>

Sans argument, la méthode Text_Password::create() permet par défaut de générer un mot de passe contenant 10 caractères.

PHP:
  1. <?php
  2. ...
  3. echo Text_Password::create();
  4. ?>

Résultat

CODE:
  1. guphustupr

Vous souhaitez générer une liste de plusieurs mots de passes ? Plutôt que de boucler la méthode Text_Password::create() pour générer une liste de 10 mots de passe par exemple, vous pouvez utiliser la méthode Text_Password::createMultiple() qui prend en premier argument le nombre de mots de passe à génerer et qui renvoit le résultat sous forme de tableau.

PHP:
  1. <?php
  2. ...
  3. print_r(Text_Password::createMultiple(5));
  4. ?>

Résultat

CODE:
  1. Array
  2. (
  3.     [0] => slionicrom
  4.     [1] => naecriofri
  5.     [2] => tiatratous
  6.     [3] => tiohuloutr
  7.     [4] => uiosiostou
  8. )

Vous souhaitez maintenant imposer les caractères à utiliser afin de générer le mot de passe ? Dans l'exemple ci-dessous, nous allons générer un mot de passe contenant 8 caractères qui ne peuvent être que les lettres a,b,c,d,e. De plus, le mot de passe ne sera pas prononceable. Bien évidemment, il est conseillé, pour des raisons de sécurité, de diversifier au maximum les caractères. Un tel mot de passe peut trés facilement succomber à une attaque itérative.

PHP:
  1. <?
  2. ...
  3. echo Text_Password::create('8', 'unpronounceable', 'a,b,c,d,e');
  4. ?>

Résultat

CODE:
  1. cbeabdde

Mélangeons un peu tout celà. Générons 10 mots de passe de 8 caractères chacun, prononceables, et contenant uniquement les lettres de l'alphabet.

PHP:
  1. <?
  2. ...
  3. print_r(Text_Password::createMultiple(10, 8, 'pronounceable'));
  4. ?>

Résultat

CODE:
  1. Array
  2. (
  3.     [0] => routiost
  4.     [1] => lovadrea
  5.     [2] => draekesl
  6.     [3] => trioreua
  7.     [4] => crudouce
  8.     [5] => fraiwres
  9.     [6] => trecleap
  10.     [7] => stopoupr
  11.     [8] => gioreuac
  12.     [9] => traecreu
  13. )

Générons maintenant 10 mots de passe de 10 caractères chacun, inprononceables, et contenant des caractères alphanumériques.

PHP:
  1. <?
  2. ...
  3. print_r(Text_Password::createMultiple(10, 10, 'unpronounceable', 'alphanumeric'));
  4. ?>

Résultat

CODE:
  1. Array
  2. (
  3.     [0] => cgUmmxTAOA
  4.     [1] => pliK92u0UB
  5.     [2] => 2urf05tgLq
  6.     [3] => MXsLZkoTUb
  7.     [4] => INIsBbtmIA
  8.     [5] => MmD9oTDqow
  9.     [6] => TWm24k2hC8
  10.     [7] => 7Fji5YM67Q
  11.     [8] => bhZOl8XMXu
  12.     [9] => eunkB1R6RP
  13. )

Avec le package Text_Password, il est également possible d'extrapoler un mot de passe à partir d'une chaine de caractères donnés. Ainsi, en se basant sur l'identifiant d'un utilisateur, il est possible de générer un mot de passe en rapport. Celà est bien évidemment déconseillé si l'algorithme d'obfuscation est trop simple ou réversible.

Le package propose les algorithmes suivants : xor, rotx, rotx++, rotx--, ascii_rotx, ascii_rotx++, ascii_rotx--, shuffle, reverse. Puisqu'au niveau du code, ils s'utilisent tous de la même facon, nous ne donnerons un exemple qu'avec ROT13.

PHP:
  1. <?
  2. ...
  3. echo Text_Password::createFromLogin('aurelien', 'rotx', 13);
  4. ?>

Résultat

CODE:
  1. nheryvra

/!\ Attention /!\ Comme expliqué ci-dessus, générer un mot de passe à partir d'un identifiant utilisateur n'est pas conseillé dans la pratique. D'une part il est plus simple de découvrir l'identifiant d'un utilisateur que son mot de passe. D'autre part, dans notre exemple, l'algorithme ROT13 (qui est en fait un décalage de 13 lettres dans l'alphabet) est évidemment trés facile à remonter.

Liens partenaires

A lire également


Computer Chronicles: Computer Security (1984)

Bookmark ce billet !


 scoopeo:Tutoriel PHP : Text_Password  fuzz:Tutoriel PHP : Text_Password  tapemoi:Tutoriel PHP : Text_Password  nuouz:Tutoriel PHP : Text_Password  blogmemes:Tutoriel PHP : Text_Password  digg:Tutoriel PHP : Text_Password  del.icio.us:Tutoriel PHP : Text_Password  spurl:Tutoriel PHP : Text_Password  simpy:Tutoriel PHP : Text_Password  blinklist:Tutoriel PHP : Text_Password  furl:Tutoriel PHP : Text_Password  reddit:Tutoriel PHP : Text_Password  fark:Tutoriel PHP : Text_Password  blogmarks:Tutoriel PHP : Text_Password  Y!:Tutoriel PHP : Text_Password

1 Response to “Tutoriel PHP : Text_Password”


  1. 1 Stanislas Quastana's WebLog on TechNet Trackback on Jun 5th, 2006 at 11:31

Leave a Reply



Soyez alerté par email dés qu'un nouveau billet est en ligne !