Passwort – Sicherheit ermitteln [update]

Viele Benutzer möchten lieber ihre eigenen Passwörter verwenden, deshalb ist es unter Umständen sinnvoll, dem Benutzer anzuzeigen, wie sicher das von ihm gewählte Passwort ist. Ihm sollten dabei natürlich keine Vorschriften gemacht werden, jedoch sollte ihm deutlich gemacht werden, falls er ein zu unsicheres Passwort verwendet.

Zu diesem Zweck habe ich jetzt eine Funktion erstellt, welche das Passwort anhand mehrerer Kriterien analysiert und entsprechend bewertet. Hierzu wird geprüft, ob:

  • Das Passwort in einem Lexikon steht (sofern pspell installiert)
  • Das Passwort eine optimale Länge erreicht
  • Das Passwort aus Groß-/Keinbuchstaben, Zahlen und Sonderzeichen besteht
  • identische Zahlenfolgen enthält (mind.3)
  • Tastatur-Sequenzen enthält (mind. 3) – Derzeit nur mit deutschem Layout.
  • Zahlen-Sequenzen enthält (mind. 3)
  • Alphabet-Elemente enthält (mind. 3)

Eine JavaScript-Lösung fällt leider aus, da hier eine Wortlisten-Prüfung nur umständlich möglich sein dürfte, dies aber wohl der wichtigste Test darstellt (absolutes Ausfallkriterium). Deshalb sollte bei Verwendung des Scriptes darauf geachtet werden, dass PHP über pspell-Unterstützung verfügt.

Da der Code jetzt etwas größer ist, habe ich ihn in einer extra-Datei als eigene Klasse erstellt. Hier gehts zum Script. Es darf unter den Bedingungen der GPL 2 frei verwendet werden.

[Update]
Es waren ein paar kleine Bugs im Script, die jetzt aber behoben sind (danke @Driver)

14 Gedanken zu „Passwort – Sicherheit ermitteln [update]

  1. Das Tool ist sehr Hilfreich, Danke!

    Ich habe mal eine Beispielsanwendung mit Ajax (Unter Benutzung von Sajax) daraus gebastelt.
    http://test.lintec.ch/tool/passwort_check.php
    Nachdem tippen, einfach irgendwo ausserhalb des Feldes klicken. (Wenn man sich das Ganze als ein Eingabeformular vorstellt macht es mehr Sinn.)

    Ich weiss es hat noch Fehler. (z.B die Umlaut werden nicht korrekt übertragen.)

    Eine Frage habe ich aber noch: Was ist mit Zahlenfolge gemeint?

    Gruss

  2. Hallo

    Es tut mir Leid. Ich seh erst jetzt, dass beim Senden des Kommentars ein Teil abgeschnitten wurde. (Wegen dem Grösser-als-Zeichen. Ich hatte es nicht als HTML entie geschrieben.)

    In Zeile 152 und 180 sollte es for ($i=0;$i<[b]=[/b]$passwordLength-3;$i++) heissen. Ohne das Gleichheitszeichen werden die letzten drei Zeichen eines Strings nicht berücksichtigt.

    Grüsse
    Driver

  3. Hallo,
    ich finde dein Script super, nur ist mir aufgefallen, dass er mir ein Rating für mein Passwort von 100 gibt, wenn ich nur ein “ü” eintippe. Bei einem “ä” und “ö” bekomm ich ein Rating von 80. Auch wenn ich es in $specialchars eintrage. Das ändert nichts. Könntest du mir vielleicht helfen und sagen, was ich ändern müsste, damit die Umlaute als “normale” Buchstaben behandelt werden?

    Grüße
    Alex

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.