Werner: Passwort überprüfen

hallo liebe Forengemeinde.

Kann mir bitte jemand bei mein Problem helfen?

Es soll ein Passwort überprüft werden Passwortlänge >= 9 Zeichen Erlaubte Zeichen: 123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ!@ Das Passwort muss mindestens enthalten: 1 Klein und 1 Großbuchstabe und eine Zahl und die Sonderzeichen @ und !

Mein Ansatz prüft zwar das Vorhandensein der Zeichen aber mit der weiteren Überprüfung, komme ich nicht weiter.

if( preg_match( '#[123456789]#', $passwort )
   && preg_match( '#[abcdefghjkmnpqrstuvwxyz]#', $passwort )
&& preg_match( '#[ABCDEFGHJKMNPQRSTUVWXYZ]#', $passwort )
   && preg_match( '#[!@]#', $passwort )
&& strlen($passwort) >=9
) 
{
#Passwort OK
}

else
{
#passwort falsch
}

Danke Werner

  1. hallo

    hallo liebe Forengemeinde.

    Ich würde eher auf die Länge des Passworts denn auf den Inhalt des Passworts achten.

    Die Qualität eines Passworts wird nicht besser dadurch, dass bestimmte Zeichen vorhanden sein müssen.

    1. Hallo @beatovich,

      Ich würde eher auf die Länge des Passworts denn auf den Inhalt des Passworts achten.

      es kommt also doch auf die Länge an 😝 – und den passenden xkcd.

      Viele Grüße
      Robert

      1. hallo

        Hallo @beatovich,

        Ich würde eher auf die Länge des Passworts denn auf den Inhalt des Passworts achten.

        es kommt also doch auf die Länge an 😝 – und den passenden xkcd.

        Nun ja, accounts sind in schwieriges Thema.

        Ich neige dazu, dem User gar nicht mehr die Passworterstellung zuzumuten, sondern sende ihm ein generiertes und global gut handhabbares und strukturiertes Passwort in die nicht mehr optionale Mailbox zu in der Annahme, dass er entweder copy/paste oder den Passwortmanager verwendet.

        1. Hallo @beatovich,

          Ich neige dazu, dem User gar nicht mehr die Passworterstellung zuzumuten, sondern sende ihm ein generiertes und global gut handhabbares und strukturiertes Passwort in die nicht mehr optionale Mailbox zu in der Annahme, dass er entweder copy/paste oder den Passwortmanager verwendet.

          … und das Passwort nicht unterwegs mitgelesen wird. Eine Email ist wie eine Postkarte!

          Viele Grüße
          Robert

          1. hallo

            … und das Passwort nicht unterwegs mitgelesen wird. Eine Email ist wie eine Postkarte!

            Etwas ist immer wie eine Postkarte. Aber mindestens darf ich darauf vertrauen, dass ich die Mailbox mit einem User assozieren kann.

            1. Moin @beatovich,

              … und das Passwort nicht unterwegs mitgelesen wird. Eine Email ist wie eine Postkarte!

              Etwas ist immer wie eine Postkarte.

              An einer PGP-oder S/MIME-verschlüsselten Postkarte beißen sich Dritte allerdings die Zähne aus.

              Aber mindestens darf ich darauf vertrauen, dass ich die Mailbox mit einem User assozieren kann.

              Und wenn jemand Drittes die Passwort-Mail vorher abhängt, kann er den Account übernehmen und du assoziierst ihn mit trotzdem mit jemand anderem.

              Viele Grüße
              Robert

              1. hallo

                Moin @beatovich,

                … und das Passwort nicht unterwegs mitgelesen wird. Eine Email ist wie eine Postkarte!

                Etwas ist immer wie eine Postkarte.

                An einer PGP-oder S/MIME-verschlüsselten Postkarte beißen sich Dritte allerdings die Zähne aus.

                Das ist auf der Bearbeitungsliste

                Dennoch etwas ist immer wie eine Postkarte.

                Mein E-Banking Provider konnte mit diesem Umstand nur umgehen, indem er mir 3 verschiedene Postkarten zugesendet hat, um alle Betriebskomponenten für's ebanking zusammenzusetzen.

                Und wenn jemand Drittes die Passwort-Mail vorher abhängt, kann er den Account übernehmen und du assoziierst ihn mit trotzdem mit jemand anderem.

                Es gibt so viele Stellen für möglichen Dateneinbruch, da gebe ich dir vollkommen recht. Dennoch bleibt die aktuell einfachste Userassoziation im Zusammenhang mit einer Mailbox.

                1. Hallo @beatovich,

                  An einer PGP-oder S/MIME-verschlüsselten Postkarte beißen sich Dritte allerdings die Zähne aus.

                  Das ist auf der Bearbeitungsliste

                  Dennoch etwas ist immer wie eine Postkarte.

                  … oder doch eher wie ein Brief?

                  Mein E-Banking Provider konnte mit diesem Umstand nur umgehen, indem er mir 3 verschiedene Postkarten zugesendet hat, um alle Betriebskomponenten für's ebanking zusammenzusetzen.

                  Äh, ernsthaft? Echte Postkarten bzw. unverschlüsselte Emails?

                  Viele Grüße
                  Robert

                2. hallo

                  An einer PGP-oder S/MIME-verschlüsselten Postkarte beißen sich Dritte allerdings die Zähne

                  Gut die Lösung mit normaler Mail

                  Voraussetzung: es besteht ein Cookie im Browser. Es wird ein Freischaltcode statt ein Passwort gesendet. Im Browser existiert ein Cookie. Es kann also überprüft werden, dass Accountersteller und Mailbox-inhaber übereinstimmen. Sodann kann das Passwort an den https gesicherten Browser gesendet werden.

      2. Hallo Robert,

        es kommt also doch auf die Länge an 😝 – und den passenden xkcd.

        Als Analyse dazu. *englisch

        Gruss
        Henry

  2. @@Werner

    Es soll ein Passwort überprüft werden Passwortlänge >= 9 Zeichen
    Erlaubte Zeichen: 123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ!@
    Das Passwort muss mindestens enthalten: 1 Klein und 1 Großbuchstabe und eine Zahl und die Sonderzeichen @ und !

    Mindestlänge OK, aber die anderen Kriterien sind nicht sinnvoll.

    Wenn nun in meiner Passphrase (das trifft es eher als „Passwort“), die ich mir leicht merken kann, ein ä, ß, é o.ä. vorkommt? Ich kann mir nicht sol leicht merken, dafür fälschlicherweise ae, ss oder e zu schreiben.

    Passphrasen sollten alle Zeichen enthalten dürfen. Auch kyrillische. Auch chinesische/japanische. Auch Emoji.

    Passphrasen sollten keine bestimmten Zeichen enthalten müssen. Einen Satz in Kleinbuchstaben kann ich mir gut merken und eintippen. Sobald da eine Ziffer enthalten sein muss, vergesse ich das wieder.

    Und es ist keinesfalls so, dass ein Satz in Kleinbuchstaben eine unsichere Passphrase wäre.

    Zur Überprüfung der Stärke von Passphrasen gibt es Bibliotheken wie bspw. zxcvbn.

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  3. Hallo Werner,

    neben dem Hinweis von beatovich seien noch die folgenden Hinweise zu regulären Ausdrücken angebracht.

    Dein Zeichenvorat

    123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ!@

    lässt sich in folgende Zeichen (-klassen) aufteilen:

    • \d bzw. [1-9] — warum eigentlich keine 0?
    • [a-hjkmnp-z] und in Großbuchstaben — warum eigentlich ohne i, l und o?
    • \!
    • und ob es @ oder \\@ heißt überlasse ich dem Studium der Dokumentation.

    Vermutlich kannst du deine gesamte Aufgabenstellung,

    Es soll ein Passwort überprüft werden Passwortlänge >= 9 Zeichen Erlaubte Zeichen: 123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ!@ Das Passwort muss mindestens enthalten: 1 Klein und 1 Großbuchstabe und eine Zahl und die Sonderzeichen @ und !

    sogar in einem einzigen regulären Ausdruck unterbringen.

    Viele Grüße
    Robert

    1. @@Robert B.

      Vermutlich kannst du deine gesamte Aufgabenstellung […] sogar in einem einzigen regulären Ausdruck unterbringen.

      Der bessere Unterbringungsort ist der Mülleimer. 😜

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
      1. Meine Güte Leute,

        ich wollte hier keine Diskusion lostreten ob es Sinn oder keinen Sinn macht Das war lediglich ein Beispiel um die Syntax klar zu machen.

        warum führt das zu falschen Ergebnis ? if(preg_match('#[123456789]#', $passwort)) { echo "ok"; } else {echo"falsch";}

        von Meinem Verständnis her sollten nur die Zahlen 1-9 als OK gelten gebe ich 0 als Passwort an kommt falsch gebe ich 1 an kommt OK gebe ich M an kommt falsch bis hier hin klappt alles

        Gebe ich aber 1M oder 10 an kommt ebenfalls OK und das verstehe ich nicht

        Danke Werner

        1. hallo

          warum führt das zu falschen Ergebnis ? if(preg_match('#[123456789]#', $passwort)) { echo "ok"; } else {echo"falsch";}

          Gebe ich aber 1M oder 10 an kommt ebenfalls OK und das verstehe ich nicht

          Dein Pattern fragt, kommt in Passwort mindestens ein Zeichen aus [1-9] vor, ohne sich darum zu kümmern, was ausserdem vorhanden ist.

        2. @@Werner

          Meine Güte Leute,

          ich wollte hier keine Diskusion lostreten ob es Sinn oder keinen Sinn macht

          Ziel dieses Forums …

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann