Matze: Passwort Prüffunktion

Beitrag lesen

Hallo,

äh nein. Das hat nichts mit Übersicht zu tun. So kann man Deine Frage nicht beantworten. Wie angemerkt, so wie vorgestellt, ist die Funktion meiner Meinung nach völlig sinnfrei und kann der Einfachheit halber weggelassen werden.(...)

"abcd" ist nicht unsicherer als "aaaa" und genauso unsicher wie "asdf" oder "qwer".

dann versuch ich es doch noch einmal vollständig und erweitert um die Prüfung nach z.B. aaaa, 1111 usw.
Das mit dem Wörterbuch krieg ich nicht hin, ich komm nicht an die CrackLib.

Zwei Sekunden Zwangspause nach drei oder fünf Fehlversuchen sind übrigens ein hervorragendes Mittel gegen Brute-Force-Angriffe.

Ich hab jetzt am Ende der Funktion ein sleep(120);, glaube aber, dass das dort an der falschen Stelle ist oder?

hier noch einmal der Code (erweitert und vollständig)

  
function good_pwd($string, $minlenght, $maxlenght, $refstring){  
  
        # Wenn String leer  
  
        if(empty($string)) $error = '1';  
  
        # Wenn String zu lang oder zu kurz  
  
        if(strlen($string) < $minlenght || strlen($string) > $maxlenght) $error = '2';  
  
        # Wenn String fortlaufender Folge ist  
  
        $length = strlen($string);  
        $chars = array();  
        $chars = str_split($string);  
        for($i = 0; $i < $length; $i++){  
                if(!isset($charold)){  
                        $charold = $chars[$i];  
                }else{  
                        $charold++  
                }  
  if($chars[$i] == $charold){  
                        $error = '3';  
                }else{  
                        $i = $length;  
                }  
        }  
  
        # Wenn String = Referenzstring (z.B. Passwort = Name)  
  
        if(strtolower($string) == strtolower($refstring)) $error = '4';  
  
        # Wenn String nur aus einem Zeichen besteht  
  
        $length = strlen($string);  
        $chars = array();  
        $chars = str_split($string);  
        for($i = 0; $i < $length; $i++){  
                if(!isset($charold)) $charold = $chars[$i];  
                if($chars[$i] == $charold){  
                        $error = '5';  
                }else{  
                        $i = $length;  
                }  
        }  
        if(!isset($error)) error = '0';  
        sleep(120);  
        return $error;  
}  

Mittlerweile liefert die Funktion einen Errorcode, diesen kann man dann z.B. mit einer Switch-Funktion bequem auswerten bzw. den Switch-Teil gleich mit in die Funktion schreiben und eine vollständige Fehlermeldung ausgeben, das wollte ich mir jetzt aber ersparen.

Ist die Funktion so jetzt einigermaßen brauchbar?

Danke und Grüße, Matze