Passwörter mit Sonderzeichen ausgeben

  • Hallo,
    ich würde gerne in PHP zufällige Passworter mit einer Länge von 8 Zeichen generieren.
    Ich habe das momentan so gelöst:

    Dabei gibt es nun ein Problem:

    Ich bekomme teilweise Passwörter geliefert, die nur 2 Stellen haben oder ganz leer sind. Außerdem enthalten die ausgegebenen Zeichenketten oft ein Â.
    Das hängt damit zusammen, dass Zeichen wie "<", ">", und "&" in HTML spezielle Bedeutungen haben. Wenn dahinter dann kein sinnvoles HTML kommt wird das Passwort einfach abgeschnitten und wenn sinnvoller Code folgt, entstehen Zeichen, die in $charset nicht enthalten sind.

    Um das zu vermeiden, müsste ich die Zeichenfolge $pwd in PHP als für HTML unbedeutsam kennzeichnen, weil ich $spex der Übersicht wegen so lassen will wie es ist. Wie macht man sowas?

    Stellt sich dieses Problem eigentlich auch beim Versand der PWs per Mail und der Abfrage am Login?
    Wohl eher nicht oder?

    Danke im Voraus!

  • Danke für die Info!

    Ich werd einfach deinen Vorschlag annehmen und die problembehafteten Zeichen rauslassen. Das mindert die Passwortsicherheit ja nicht wesentlich.

  • Das da geht problemlos bei mir:

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Nun ja, das Problem ist bloß, dass sich ja dadurch natürlich auch der Hashwert ändert, wenn das Passwort Sonderzeichen enthält, die umgewandelt werden.
    Wenn also der Nutzer das Passwort dann im normalen Klartext für einen Login eingibt, wird das nicht funktionieren, außer, wenn man das ganze mit

    htmlspecialchars($passwort) abgleicht.

    Außerdem löst dein Vorschlag nicht das Problem mit dem  (&Acirc; Â). Das wundert mich ein wenig, weil ja das "&" eigentlich umgewandelt werden sollte.

    Ich frage mich aber gerade, ob sich der Aufwand lohnt, um das ordentlich hinzubekommen. Schließlich gibt man das Passwort ja nicht auf dem Bildschirm aus.
    Und es handelt sich hier ja einzig und allein um ein Problem von HTML.
    Deshalb müsste das doch eigentlich auch so funktionieren, wenn ich den MD5-Hash des Passwortes speichere und dann mit dem der Formulareingabe des Nutzers abgleiche. Sicherheitshalber habe ich alle Sonderzeichen aus $spex entfernt, die auch eine spezielle HTML-Kodierung haben:

    $spex = "-@%/[]()+*?!$";

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!