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.
-
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
-
// include du package Pear Text_Password
-
require_once "Text/Password.php";
-
...
-
?>
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
-
...
-
?>
Résultat
-
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
-
...
-
?>
Résultat
-
Array
-
(
-
[0] => slionicrom
-
[1] => naecriofri
-
[2] => tiatratous
-
[3] => tiohuloutr
-
[4] => uiosiostou
-
)
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.
-
<?
-
...
-
?>
Résultat
-
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.
-
<?
-
...
-
?>
Résultat
-
Array
-
(
-
[0] => routiost
-
[1] => lovadrea
-
[2] => draekesl
-
[3] => trioreua
-
[4] => crudouce
-
[5] => fraiwres
-
[6] => trecleap
-
[7] => stopoupr
-
[8] => gioreuac
-
[9] => traecreu
-
)
Générons maintenant 10 mots de passe de 10 caractères chacun, inprononceables, et contenant des caractères alphanumériques.
-
<?
-
...
-
?>
Résultat
-
Array
-
(
-
[0] => cgUmmxTAOA
-
[1] => pliK92u0UB
-
[2] => 2urf05tgLq
-
[3] => MXsLZkoTUb
-
[4] => INIsBbtmIA
-
[5] => MmD9oTDqow
-
[6] => TWm24k2hC8
-
[7] => 7Fji5YM67Q
-
[8] => bhZOl8XMXu
-
[9] => eunkB1R6RP
-
)
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.
-
<?
-
...
-
?>
Résultat
-
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.















1 Response to “Tutoriel PHP : Text_Password”