andreas: oder MySQL? Passwörter verschlüsselt ablegen

Hallo!
Ich speicher intelligenterweise meine Passwörter immer ganz normal in der DB. Aber das sollte man ja lieber lassen, richtig?
Also meine Frage, wie kann ich in mysql Passwörter vrschlüsselt ablegen, die php dann wieder erkennt, oder wie funktioniert das? Ich weiß leider nicht ob PHP oder MySQL die Verschlüsselung übernimmt.
Wie kann man das machen?

Grüsse
  Andreas

  1. Hi,

    Ich speicher intelligenterweise meine Passwörter immer ganz normal in der DB. Aber das sollte man ja lieber lassen, richtig?

    kommt darauf an. Wenn Du das Passwort irgendwann mal im Klartext haben willst ("Sie haben Ihr Passwort vergessen? Hier zusenden lassen."), ist es unumgänglich, sie unverschlüsselt vorliegen zu haben - ein reversibler Algorithmus ist so gut wie kein Algorithmus.

    Also meine Frage, wie kann ich in mysql Passwörter vrschlüsselt ablegen,

    http://www.php.net/manual/en/function.crypt.php

    die php dann wieder erkennt, oder wie funktioniert das?

    Du vergleichst das verschlüsselte gespeicherte Passwort mit dem verschlüsselten eingegebenen Passwort.

    Ich weiß leider nicht ob PHP oder MySQL die Verschlüsselung übernimmt.

    Mir ist nicht bekannt, dass MySQL eine solche Funktion hätte - es ist aber auch nicht die Aufgabe eines DBMS, Dateninhalte zu verändern.

    Cheatah

    1. Hi!

      Im Prinzip brauche ich das PW nicht im Klartext. Lediglich um beim Login zu überprüfen, und das geht so? I Wenn ich das richtig verstanden habe wird das Passwort mhr oder weniger zufällig verschlüsselt, d.h. wenn ich 2 mal das gleiche pw eingebe, habe ich einen anderen Code. Was bringt mir das dann, wie kann ich beim Login das eigegebene PW mit dem in der DB vergleichen?

      Es gibt doch sehr viele Seiten die das Passwort bei vergessen zusenden, Foren, und inzwischen sogar web.de(an 2. Adresse:)!

      Ist das dann definitiv unsicherer, oder benutzen die da noch was anderes?

      Grüsse
        Andreas

      1. Hi,

        Ich benutze fuer einfache password-Verschluesselung den password Befehl in mysql. (Der Algorythmus bleibt gleich, daher wohl weniger sicher als md5).  Syntax: einfach im Insert oder Update - statement den Text statt im Klartext 'passwordhier' mit "password('passwordhier')" eingeben. Beim vergleichen mit der Eingabe im Login dann einfach auch "Select id where userpassword=password('passwordhier')  and  username='username'".

        Re: vergessene Passwords - entweder die speichern das Password noch zusaetzlich irgendwo, oder sie brechen sich ein Bein den Algorythmus wieder rueckgaengig zu machen.

        Gruss, Mel

  2. Hallo Andreas,

    Also meine Frage, wie kann ich in mysql Passwörter vrschlüsselt ablegen, die php dann wieder erkennt, oder wie funktioniert das? Ich weiß leider nicht ob PHP oder MySQL die Verschlüsselung übernimmt.
    Wie kann man das machen?

    Entweder mit den Crypto-Funktionen von PHP oder mittels MD5-Hash. Letzterer kann mittels md5() entweder von PHP oder von MySQL generiert werden. Man vegleicht den MD5-Wert eines eingegebenen Passworts mit dem in der DB abgelegten Ursprungswert.

    MfG, Thomas

    1. Hi Thomas!
      Irgendwie verstehe ich das nicht richtig. Speichere ich in de DB jetzt das verschlüsselte oder nicht?
      Wenn ja, wie kann ich das dann vergleichen, wenn ich
      a) nur in eine Richtung verschlüsseln kann(Du weißt was ich meine) und
      b) der generierte Code immer ein anderer ist, bei gleichem Passwort, wie kann ich dann 2 vergleichen?

      Schließt sich meiner Meinung beides gegenseitig aus, entweder ich muß das PW zurückrechnen können, um das PW selbst zu vergleichen, oder ich muß die beiden Codes vergleichen, irgendwas muß ich doch vergleichen können, oder?

      Grüsse
        Andreas

      1. Moin

        Ach wie gut habens doch jene die auch mal eine Suchmaschine bedienen oder sonstige Doku lesen. Für dich daher hier nochmal der Kurzabriss:

        Wenn der User sein Passwort festsetzt jagst du es durch md5 (http://www.php.net/md5) und speicherst den Hash in der Datenbank. Jetzt ist das Passwort verschlüsselt und kann ohne Brute Force nicht wiederhergestellt werden (das ist ein Feature!).
        Wenn der User authentifiziert werden soll, jagst du das Passwort durch md5 und vergleichst es mit dem Hash der in der Datenbank steht. Wenn die beiden gleich sind, ist das eingebene Passwort ok und das Skript kann weiterlaufen, wenn nicht, dann ist es nicht ok und das Skript muss tun, was immer es tun muss, wenn das Passwort falsch ist.
        Du kannst statt md5 auch crypt (http://www.php.net/crypt) nehmen, aber davon würde ich abraten, weil es nicht ganz so sicher ist.

        Erweiterte Möglichkeiten:

        • Du verbindest Username und Passwort und speicherst den Hash davon (Passwort _vor_ Username stellen!). Dann sieht ein Angreifer, der Datenbankzugriff erlangt, nichtmal wenn zwei User das gleiche Passwort haben.
        • Wenn der User sein Passwort vergessen haben sollte, musst du ein neues Passwort (das alte kann nicht wieder hergestellt werden, das ist ein Feature!) generieren, den Hash davon in einer anderen Spalte der Datenbank sichern (ggbf. noch mit einem Verfallsdatum für das neue Passwort) und ihm das neue Passwort sicher übergeben (etwa per Mail senden). Das neue Passwort ersetzt das alte dann erst wenn der User sich erstmal damit einloggt (einfach rüberkopieren).

        --
        Henryk Plötz
        Grüße aus Berlin

      2. Hallo Andreas,

        Irgendwie verstehe ich das nicht richtig. Speichere ich in de DB jetzt das verschlüsselte oder nicht?
        Wenn ja, wie kann ich das dann vergleichen, wenn ich
        a) nur in eine Richtung verschlüsseln kann(Du weißt was ich meine) und
        b) der generierte Code immer ein anderer ist, bei gleichem Passwort, wie kann ich dann 2 vergleichen?

        Mal auf MySQL-Level:

        Passwort vergeben:
        INSERT INTO tabelle (username,passwort) VALUES ('user',MD5('pass'))

        Passwort beim Einloggen pruefen:
        SELECT ... FROM tabelle WHERE username='user' AND passwort=MD5('pass')

        Hat der Vergleich geklappt, ist der User authentifiziert, sonst nicht.

        MfG, Thomas

      3. Moin!

        b) der generierte Code immer ein anderer ist, bei gleichem Passwort, wie kann ich dann 2 vergleichen?

        Beim Verschlüsseln übergibst du einen Zufallswert (salt) (der kann aber auch immer gleich sein) mit an die Funktion. Unterschiedliche Zufallswerte erzeugen unterschiedliche Ergebnisse. Gleiche Zufallswerte erzeugen gleiche Ergebnisse.

        Und den Zufallswert, der bei der Erzeugung zur Anwendung gekommen ist, mußt du dir nicht mal extra merken, der steckt nämlich in den ersten paar Zeichen des verschlüsselten Paßwortes. Deshalb übergibst du das verschlüsselte Paßwort beim verschlüsseln des Login-Paßwortes mit an die Funktion und kriegst dadurch vergleichbare Werte.

        if (crypt($loginpw,$altespw)==$altespw) { //login geht }

        Das mit dem Zufallswert gibts aber nur bei der Funktion crypt. Diese Funktion implementiert in PHP verschiedene Mechanismen, die unterschiedlich sicher sind. Je mehr salt-Länge, desto besser.

        Mehr (englische) Informationen hier: http://www.php.net/manual/en/function.crypt.php

        Du kannst md5() benutzen, da steckst du nur Strings rein, und kriegst verschlüsseltes raus (ohne Zufallselement offenbar). Das mag für deine Anwendung relativ egal sein, der Witz ist, daß mit crypt eben dieser Zufallswert ins Spiel kommt, d.h. gleiche Paßwörter sehen verschlüsselt anders aus, wenn sie unterschiedliche salt-Werte haben.

        - Sven Rautenberg

        1. Moin

          Du kannst md5() benutzen, da steckst du nur Strings rein, und kriegst verschlüsseltes raus (ohne Zufallselement offenbar). Das mag für deine Anwendung relativ egal sein, der Witz ist, daß mit crypt eben dieser Zufallswert ins Spiel kommt, d.h. gleiche Paßwörter sehen verschlüsselt anders aus, wenn sie unterschiedliche salt-Werte haben.

          Das geht wie ich in dem anderen Posting schrieb, auch ähnlich mit MD5. crypt() hat allerdings den imensen nachteil dass es nur 8 Zeichen berücksichtigt. Ein Angreifer muss also - komme was wolle - die Brute Force-Suche nur über maximal 8 Zeichen durchführen.

          --
          Henryk Plötz
          Grüße aus Berlin

          1. Auch Moin!

            Das geht wie ich in dem anderen Posting schrieb, auch ähnlich mit MD5. crypt() hat allerdings den imensen nachteil dass es nur 8 Zeichen berücksichtigt. Ein Angreifer muss also - komme was wolle - die Brute Force-Suche nur über maximal 8 Zeichen durchführen.

            Wenn ich die Doku zu crypt lese, dann sehe ich, daß der verwendete Algorithmus von der Plattform abhängt, und nicht nur den Standard-DES-Algorithmus umfaßt, sondern auch Triple DES, MD5 und Blowfish umfassen KANN. Die Verfügbarkeit kann mit Konstanten abgefragt werden.

            Und sollte sowas verfügbar sein, dann kommt dein Argument zu kurz, weil MD5 oder Blowfish sollten doch etwas besser sein als Standard-crypt. :)

            - Sven Rautenberg

          2. Hi!

            Das geht wie ich in dem anderen Posting schrieb, auch ähnlich mit MD5. crypt() hat allerdings den imensen nachteil dass es nur 8 Zeichen berücksichtigt. Ein Angreifer muss also - komme was wolle - die Brute Force-Suche nur über maximal 8 Zeichen durchführen.

            Wieso?

            Was ist die Brute Force-Suche? Ist das was anderers als mit nem Script Listen mit Passwörtern fortlaufend auszuprobieren?
            Kann man das nicht verhindern indem man z.B. pro Session ID nur 10 Versuche gestattet oder sowas?
            Wie kann man das noch schützen bzw. was gibt es da noch für Sicherheitslücken?

            Grüsse
              Andreas

          3. Hi!
            Was sehe ich da für einen Eintrag in der Doku - vom 24.01.???

            ;-)

            Grüsse
              Andreas

            1. Moin

              Was sehe ich da für einen Eintrag in der Doku - vom 24.01.???

              ¿häh?

              --
              Henryk Plötz
              Grüße aus Berlin

              1. http://www.php.net/manual/de/function.crypt.php

                ganz unten, war in etwa die Zeit der Diskussion, war bestimmt einer von hier!

        2. Hi!
          Erstmal vielen Dank für die Antwort.
          Was ich nicht verstehe: Wieso wollt Ihr allen Anfängern immer die Infos in englisch andrehen, wenn es die zu 100% gleich auch in deutsch gibt???

          Mehr (englische) Informationen hier:

          http://www.php.net/manual/en/function.crypt.php
                                           ^^
          http://www.php.net/manual/de/function.crypt.php
                                           ^^

          Und ja, das hatte ich schon in D gelesen, aber diese Fragen habe ich mir da leider nicht beantworten können, nochmal vielen Dank dafür!

          Ich weiß dass man ab einem bestimmten Punkt in deutsch nicht mehr weiter kommt, aber mir fällt es _viel_ leichter, deutsche Dokus zu verstehen, und wenn ich deutsch viel fitter in der Programmiersprache bin, kann ich hinterher auch besser in englisch klar kommen, alles in allem spare ich mir so viel Zeit und Mühe!

          Und das sehen die meisten Anfänger so! Deshalb wundert es mich immer dass mit erstaunlicher Beharrlichkeit immer auf die englische Doku verwiesen wird, obwohl man schon durch austauschen dieser 2 Buchstaben die deutsche Übersetzung erhält!

          Irgend jemand hat sich mal die Mühe gemacht, warum soll man es nicht dankend annehmen und benutzen, sondern ignorieren?

          Und nicht falsch verstehen soll eine _konstruktive_ Kritik sein, um den Anfängern wie mir besser zu helfen, durch 2 andere Buchstaben, erst als ich das mal bemerkte, habe ich selbst angefangen in der Doku zu lesen!!!

          Sorry wenn ich noch nicht alles selbst finde, nur manchmal weiß ich halt nicht wonach ich suchen soll, da man meines Wissens nur nach Funktionen suchen kann, jedenfalls nicht nach dem Inhalt in den Erklärungen!

          Grüsse
            Andreas

  3. Hallo Andreas,

    ich mache das so:

    if(isset($pwd)){
    $newpwd=md5($pwd);
    mysql_connect("localhost", "root", "");
    mysql_select_db("user");
    $sql  = "INSERT INTO user (username, pass) VALUES('$username', '$newpwd')";
    echo "pwd gespeichert";
    }else{
    echo "passwort eingeben";
    }

    und zum vergleichen
    if(isset($pwd)){
    mysql_connect("$server", "$user", "$pwd");
    mysql_select_db("user") or die ("Keine Verbindung");
    $con = mysql_query("SELECT * FROM user where username=$user");
    $data = mysql_fetch_array($con);
    $c2=$data["pass"];
    $check=md5($pwd);
    if($c2==$check){
    echo "richtig";
    }else{
    echo "falsch";
    }
    }else{
    echo "geben sie ein passwort ein!";
    }

    So oder so ähnlich müsste das funktionieren!

    Gruß!

  4. Hallo!

    Danke Euch für die Hilfe. Jetzt habe 3 Möglichkeiten - welche würdet Ihr davon empfehlen, wenn ich einen von einem Hoster standardmäßig konfiguriertern Apache/PHP/MySQL habe:

    Passwort vergeben:
    INSERT INTO tabelle (username,passwort) VALUES ('user',MD5('pass'))

    Passwort beim Einloggen pruefen:
    SELECT ... FROM tabelle WHERE username='user' AND passwort=MD5('pass')

    ///////////////oder\\\\\\\\

    Passwort vergeben:
    INSERT INTO tabelle (username,passwort) VALUES ('user',password('pass'))

    Passwort beim Einloggen pruefen:
    SELECT ... FROM tabelle WHERE username='user' AND passwort=password('pass')

    ///////////////oder\\\\\\\\

    Passwort vergeben:
    INSERT INTO tabelle (username,passwort) VALUES ('user',crypt('pass'))

    Passwort beim Einloggen pruefen:
    SELECT ... FROM tabelle WHERE username='user' AND passwort=crypt('pass')

    Hat einer eine Empfehlung???

    Grüsse
      Andreas

    1. Moin

      Danke Euch für die Hilfe. Jetzt habe 3 Möglichkeiten - welche würdet Ihr davon empfehlen, wenn ich einen von einem Hoster standardmäßig konfiguriertern Apache/PHP/MySQL habe:

      Alles 3 blöde Ideen, weil das Passwort dabei zur Datenbank wandert und dabei abgefangen werden kann. Man kann den MySQLd nämlich zum Beispiel so konfigurieren dass er alle Queries loggt (ist zum Fehlersuchen klasse) und dann liegt das Passwort auf der Festplatte rum.
      Selbst wenn nicht, kann das Passwort evt. abgefangen werden während es zum DB-Server unterwegs ist (die von MySQL dafür benutzte Verschlüsselung ist iirc sehr schwach).

      Die korrekte Methode wäre die Verschlüsselung bereits in PHP durchzuführen. Und da empfehle ich aus diversen Gründen die MD5-Funktion:

      • Kryptographisch sicher
      • Kann durch Brute Force (also das durchprobieren aller möglichen Passwörter) nur sehr aufwendig geknackt werden, da es mehr Rechenzeit frisst als crypt(), vor allem, wenn du den Benutzernamen mithasht (siehe mein Posting weiter unten)
      • Aktzeptiert mehr als 8 Zeichen im Passwort
      • Ist überall verfügbar, unabhängig was crypt() auf der jeweiligen Plattform kann.

      --
      Henryk Plötz
      Grüße aus Berlin

      1. Hi!

        Ok, verstehe ich, also habe ich mal folgendes versucht:

        <?
        $v = "Andreas";
        $v = md5($v);
        echo "$v";
        ?>

        Das ergibt:

        cac58b5234e1f98b4c956998b8ac2e26

        Und dann einfach $v in der SQL Abfrage einfügen, oder?

        Jetzt habe ich aber wieder eins meiner alten Probleme: Egal wie oft ich das durchführe... ich erhalte immer dieselbe Verschlüsselung?!

        Ich hätte ja jetzt mal gedacht, dass da jedesmal was anderes steht, ist zwar jetzt schön einfach beim Einloggen zu vergleichen, aber dafür könnte man doch theoretisch einfach ein "md5 Wörterbuch" erstellen, mit nem Script soger recht einfach, wenn man eine Passwort Liste hat kann man die ja einfach kpl. übersetzen, was bringt das dann für einen Schutz???

        Grüsse
          Andreas

        1. Moin

          Und dann einfach $v in der SQL Abfrage einfügen, oder?

          genau

          Jetzt habe ich aber wieder eins meiner alten Probleme: Egal wie oft ich das durchführe... ich erhalte immer dieselbe Verschlüsselung?!

          Hmm, probieren geht über studieren. (aber ja, es kommt immer das selbe bei raus) Vielleicht möchtest du mal nach md5 googlen und dir ein bisschen was über den Algorithmus durchlesen. http://aktuell.de.selfhtml.org/artikel/javascript/md5/index.htm ist für den Anfang auch ganz lesenswert.

          Ich hätte ja jetzt mal gedacht, dass da jedesmal was anderes steht, ist zwar jetzt schön einfach beim Einloggen zu vergleichen, aber dafür könnte man doch theoretisch einfach ein "md5 Wörterbuch" erstellen, mit nem Script soger recht einfach, wenn man eine Passwort Liste hat kann man die ja einfach kpl. übersetzen, was bringt das dann für einen Schutz???

          Oh, viel Spaß. Vorneweg, das selbe ist mit klassischer Crypt()-Verschlüsselung auch möglich, und zwar braucht man da Algorithmenbedingt nur 10 Zeichen (8 Zeichen Passwort + 2 Zeichen Salt) zu berücksichtigen.

          Mit MD5 macht das aber keinen Spaß: Du brauchst ca. 15 Petabyte Speicher für diese Liste wenn sie nur die Passwörter der Längen 1 bis 8 berücksichtigen soll. (Das ist 'ne Überschlagsrechnung, Kombinatorik ist bei schon ein bisschen her). Und ausserdem: liest du manchmal auch was ich schreibe? http://forum.de.selfhtml.org/?m=18697&t=3267 Absatz "Erweiterte Möglichkeiten" Punkt 1. Das verhindert genau diese Art des Angriffs.

          Ahja, noch ein bisschen was dazu: Die Passwörter sollten vernünftig lang sein. Mit einem Brute Force-Dingens (ich glaub es war md5crack, google mal danach) kriegt man einfache 4buchstabige Passwörter in etwa 4 sek. erraten (wenn man den Hash hat). Die Verbindung des Usernamens mit dem Passwort sollte dagegen aber auch ein bisschen schützen, probier es einfach mal aus.
          Wichtig ist dass der Username _hinter_ das Passwort kommt. md5crack optimiert nämlich seine Suche wenn du von vorneherein schon weisst dass am Anfang des gehashten Strings etwas konstantes liegt, dann setzt es die MD5-Funktion darauf an, speichert den Zustand des MD5-Generators zu diesem Zeitpunkt zwischen und geht dann alle Passwörter von dort aus durch. Das kann die Suche enorm beschleunigen. (So sucht er afaik auch innerhalb der Passwörter, wenn er bespielsweise grade die Passwörter aaaaaa bis aaaazz untersucht, speichert er den Zustand nach aaaa zwischen und führt den rest der Funktion nur noch mit aa bis zz durch). Wenn der Username dahinter steht, ist das nicht (so einfach) möglich.

          Weiterer Vorteil der Verschlüsselung bereits in PHP: Wenn deine SQL-Abfragen Fehler produzieren, ist es immer gut eine Fehlerausgabe zu erzeugen die unter anderem die gesendete Abfrage enthält, das ist beim debuggen ungemein hilfreich und sowas wirst du früher oder später auch einbauen. Wenn nun aber das Passwort während so eines Fehlers in der Abfrage drinlag ist das arg böse (ob die Fehlermeldung nun direkt an den Browser oder in eine Logdatei geht, ist erstmal unwichtig, wichtig ist dass das Passwort nun irgendwo lesbar rumliegt). Da du aber so eine schöne MD5-Funktion drin hast, kann der Hash gerne in der Fehlermeldung auftauchen, das ist nicht _soo_ kritisch (schön ist es trotzdem wenn der User es nicht alles sieht, spätestens im produktiven Einsatz)

          Alle Klarheiten beseitigt?

          --
          Henryk Plötz
          Grüße aus Berlin

          1. Moin

            Soweit habe ich das glaub ich kapiert, zumindest grundsätzlich, als Sicherheitsrisiko würde ich jetzt nur noch das Verschicken des Passworts vom Client an den Server bezeichnen, oder? Und wenn ich wollte könnte ich das mit deinem Link und dem Javascript auch noch ausräumen, Richtig? Was ist wenn JS abgeschaltet ist?

            Aber mit dem Hash ist mir noch nicht 100%ig klar.
            So etwa:?

            $login = $password . "*" . $username;

            Und dann mit Explode() bei * teilen, und jeweils in die DB einragen, oder wie ist das gemeint?

            Grüsse
              Andreas

            1. Moin

              Soweit habe ich das glaub ich kapiert, zumindest grundsätzlich, als Sicherheitsrisiko würde ich jetzt nur noch das Verschicken des Passworts vom Client an den Server bezeichnen, oder? Und wenn ich wollte könnte ich das mit deinem Link und dem Javascript auch noch ausräumen, Richtig?

              Was ist wenn JS abgeschaltet ist?

              Naja, die Amtliche Lösung wäre eher SSL, aber prinzipiell schon. Wenn JavaScript aus ist, wird das Passwort dann halt trotzdem im Klartext verschickt: Daher SSL.

              $login = $password . "*" . $username;
              Und dann mit Explode() bei * teilen, und jeweils in die DB einragen, oder wie ist das gemeint?

              Nein, du sollst den Hash für gar nichts benutzen, ausser zum Vergleichen. Kurzes Beispiel:
              Benutzer eintragen:
              $benutzer = "test" // Benutzername
              $passwort = "hallo" // Passwort
              $hash = MD5($passwort.$benutzer);
              mysql_query("INSERT INTO Benutzer SET benutzername='".$benutzer."', hash='".$hash."'"); // So oder so ähnlich in die Datenbank eintragen

              Benutzername und Passwort überprüfen:
              $benutzer = "test";
              $passwort = "hallo";
              $hash = MD5($passwort.$benutzer);
              $result= mysql_query("SELECT benutzername, hash FROM Benutzer WHERE benutzername='".$benutzer."'");
              $benutzerdaten=mysql_fetch_array($result);
              if($benutzerdaten["hash"] != $hash) { // böse, böse
              } else { // ok
              }

              So oder so ähnlich (ich hab jetzt quasi alle Fehlerüberprüfungen wegfallen lassen)

              --
              Henryk Plötz
              Grüße aus Berlin

              1. Hi Henryk!

                Vielen Dank, jetzt ist alles klar, und mit SSL sollte das wirklich sicher genug sein.

                Sollte man noch mehr Fehlerquellen beachten, außer ob Passwort und Username eingegeben wurden und zu überprüfen ob die SQL Abfragen erfolgreich waren?
                Vielleicht noch von welcher Adresse die Anfrage kommt?

                Grüsse
                  Andreas

                1. Moin

                  Sollte man noch mehr Fehlerquellen beachten, außer ob Passwort und Username eingegeben wurden und zu überprüfen ob die SQL Abfragen erfolgreich waren?
                  Vielleicht noch von welcher Adresse die Anfrage kommt?

                  Eigentlich nicht. Der Rest hängt von deiner Anwendung ab, etwa ob die Passwörter irgendwann ausgetauscht werden sollen etc. Aber wenn das Passwort per SSL direkt vom Browser zum PHP-Skript wandert und dieses dann ungehasht nicht wieder verlässt dürftest du damit keine Sicherheitsprobleme erwarten müssen.
                  http://forum.de.selfhtml.org/archiv/2002/1/3196/ könnte u.U. noch interessant für dich zu lesen sein.

                  --
                  Henryk Plötz
                  Grüße aus Berlin

                  1. Moin

                    Sollte man noch mehr Fehlerquellen beachten, außer ob Passwort und Username eingegeben wurden und zu überprüfen ob die SQL Abfragen erfolgreich waren?
                    Vielleicht noch von welcher Adresse die Anfrage kommt?

                    Eigentlich nicht. Der Rest hängt von deiner Anwendung ab, etwa ob die Passwörter irgendwann ausgetauscht werden sollen etc. Aber wenn das Passwort per SSL direkt vom Browser zum PHP-Skript wandert und dieses dann ungehasht nicht wieder verlässt dürftest du damit keine Sicherheitsprobleme erwarten müssen.
                    http://forum.de.selfhtml.org/archiv/2002/1/3196/ könnte u.U. noch interessant für dich zu lesen sein.

                    --
                    Henryk Plötz
                    Grüße aus Berlin