CONTRÔLE QUALITÉ MOT DE PASSE POUR MISE À JOUR WINDOWS ACTIVE DIRECTORY VIA LDA
willeraser
Messages postés55Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention 6 mai 2009
-
3 août 2008 à 23:02
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
5 août 2008 à 00:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 5 août 2008 à 00:27
faire un controle de type au debut. Et si on passe un objet, la methode __toString est alors utilisee.
thev
Messages postés1851Date d'inscriptionlundi 7 avril 2008StatutMembreDernière intervention15 avril 2024 5 août 2008 à 00:17
Audalys, j'ai donc repris ton code que je viens de tester.
une petite question : intérêt de l'instruction : $Password = (string) $Password; ?
thev
Messages postés1851Date d'inscriptionlundi 7 avril 2008StatutMembreDernière intervention15 avril 2024 4 août 2008 à 23:14
merci à Audalys pour son apport et l'optimisation du code que je vais donc modifier en conséquence.
coucou747, ta remarque est pertinente mais je me suis placé dans le contexte de la stratégie de mot de passe d'Active Directory qui est d'origine américaine. Cette stratégie ne tient pas compte des accents si chers à nous français. Donc Password ou Pàssword est pour eux le même mot de passe. Il ne reste donc que 4 catégories, le mot de passe devant utiliser a minima 3 catégories sur 4.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 4 août 2008 à 13:15
un accent contribue a avoir un mot de passe fort.
la, si tu regardes bien ta variable $count, tu peux avoir : _A5 et pour toi, ca sera un password fort...
un password est fort si il est :
- sans cycles
- avec un jeu de caractere etendus (accents, caracteres speciaux, majuscule, minuscule, chiffres)
- long
- n'est pas dans un dictionnaier (c'est plus dur a regarder.)
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 4 août 2008 à 11:28
Salut,
Pourquoi utiliser une boucle alors que c'est inutile ? Tu passes la fonction "preg_match" sur ta chaîne et le tour est joué =)
<?php
function ControlComplexity($sPassword) {
$sPassword = (string) $sPassword;
// Si la chaîne $sPassword est inférieur à 7 on retourne FALSE.
if (strlen($sPassword) < 7) return FALSE;
// On supprime les accents de la chaîne $sPassword.
$sPassword = strtr($sPassword, 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ', 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn');
// On initialise le compteur $iReturn.
$iReturn = 0;
// On exécute nos tests.
if (preg_match('`[[:lower:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[[:upper:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[[:digit:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[^a-zA-Z0-9]`', $sPassword) === 1) $iReturn++;
if ($iReturn < 2) return FALSE;
return TRUE;
}
?>
thev
Messages postés1851Date d'inscriptionlundi 7 avril 2008StatutMembreDernière intervention15 avril 2024 3 août 2008 à 23:15
Je ne suis pas spécialement creusé la tête sur l'optimisation du code mais je suis preneur de toute suggestion pour remplacer les boucle for.
willeraser
Messages postés55Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention 6 mai 2009 3 août 2008 à 23:02
Fonctions de comptage dans les boucles for : le mal absolu. D'autant plus que c'est chaque fois la même chose...
Tu comptes ton truc dès le début, dans une variable et hop !
ereg ? Le 2ème mal absolu ! Faut utiliser les PCRE !
5 août 2008 à 00:27
5 août 2008 à 00:17
une petite question : intérêt de l'instruction : $Password = (string) $Password; ?
4 août 2008 à 23:14
coucou747, ta remarque est pertinente mais je me suis placé dans le contexte de la stratégie de mot de passe d'Active Directory qui est d'origine américaine. Cette stratégie ne tient pas compte des accents si chers à nous français. Donc Password ou Pàssword est pour eux le même mot de passe. Il ne reste donc que 4 catégories, le mot de passe devant utiliser a minima 3 catégories sur 4.
4 août 2008 à 13:15
la, si tu regardes bien ta variable $count, tu peux avoir : _A5 et pour toi, ca sera un password fort...
un password est fort si il est :
- sans cycles
- avec un jeu de caractere etendus (accents, caracteres speciaux, majuscule, minuscule, chiffres)
- long
- n'est pas dans un dictionnaier (c'est plus dur a regarder.)
sur cette source : http://www.javascriptfr.com/codes/PASSWORD_32047.aspx je n'ai pas verifie si le jeux de caractere utilise etait etendu, mais c'est deja un bon debut.
4 août 2008 à 11:28
Pourquoi utiliser une boucle alors que c'est inutile ? Tu passes la fonction "preg_match" sur ta chaîne et le tour est joué =)
<?php
function ControlComplexity($sPassword) {
$sPassword = (string) $sPassword;
// Si la chaîne $sPassword est inférieur à 7 on retourne FALSE.
if (strlen($sPassword) < 7) return FALSE;
// On supprime les accents de la chaîne $sPassword.
$sPassword = strtr($sPassword, 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ', 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn');
// On initialise le compteur $iReturn.
$iReturn = 0;
// On exécute nos tests.
if (preg_match('`[[:lower:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[[:upper:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[[:digit:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[^a-zA-Z0-9]`', $sPassword) === 1) $iReturn++;
if ($iReturn < 2) return FALSE;
return TRUE;
}
?>
3 août 2008 à 23:15
3 août 2008 à 23:02
Tu comptes ton truc dès le début, dans une variable et hop !
ereg ? Le 2ème mal absolu ! Faut utiliser les PCRE !
Ok, je parle d'optimisation, mais bon