Flo: Passwörter in DB ablegen

Hallo liebe Forenbeiträger!

Ich habe veschiedene Benutzer in einer Datenbank (MySQL 3.2) mit Namen und Passwort stehen. Momentan ist das Passwort allerdings al normaler varchar so abgelegt, das jeder administrator, der auf die DB zugreifen kann alle Passwörter lesen könnte.
Ich will das verhindern. Die Passwörter sollten am besten kryptich abgelegt werden, und nur der user selbst sollte sein Passwort kennen.

Geht das irgendwie? Gibt es in PHP eine Prozedur zum ver- und etnschlüsseln bestimmter Zeichenketten ???
Oder kann das sogar MySQL irgendwie ???

Vielen Dank
Flo

  1. Hi Flo,

    Ich will das verhindern. Die Passwörter sollten am besten kryptich abgelegt werden, und nur der user selbst sollte sein Passwort kennen.

    Geht das irgendwie? Gibt es in PHP eine Prozedur zum ver- und etnschlüsseln bestimmter Zeichenketten ???

    probiers mal mit crypt();
    Verschlüssle das Passwort und schreibs in die DB. Gibt der User wieder sein Passwort ein, verschlüssle es wieder und vergleiche, obs das Gleiche ist.

    mehr unter http://www.phpbox.de/php_befehle/crypt.php

    Gruss, sprain

    1. Hi Flo,

      Ich will das verhindern. Die Passwörter sollten am besten kryptich abgelegt werden, und nur der user selbst sollte sein Passwort kennen.

      Geht das irgendwie? Gibt es in PHP eine Prozedur zum ver- und etnschlüsseln bestimmter Zeichenketten ???

      probiers mal mit crypt();
      Verschlüssle das Passwort und schreibs in die DB. Gibt der User wieder sein Passwort ein, verschlüssle es wieder und vergleiche, obs das Gleiche ist.

      mehr unter http://www.phpbox.de/php_befehle/crypt.php

      Gruss, sprain

    2. Hi Flo,

      Ich will das verhindern. Die Passwörter sollten am besten kryptich abgelegt werden, und nur der user selbst sollte sein Passwort kennen.

      Geht das irgendwie? Gibt es in PHP eine Prozedur zum ver- und etnschlüsseln bestimmter Zeichenketten ???

      probiers mal mit crypt();
      Verschlüssle das Passwort und schreibs in die DB. Gibt der User wieder sein Passwort ein, verschlüssle es wieder und vergleiche, obs das Gleiche ist.

      mehr unter http://www.phpbox.de/php_befehle/crypt.php

      Gruss, sprain

      Danke!

      Aber warum läuft der Abgleich von Paswörtern nicht so, wie beschrieben:

      if ( crypt("test")==crypt("test"))
           {
       echo"subba";
            }

      müsste doch "subba" ausgeben - tut es aber nicht! Warum ??

      Gruß
      Flo

      1. Hi Flo,

        Aber warum läuft der Abgleich von Paswörtern nicht so, wie beschrieben:

        if ( crypt("test")==crypt("test"))
             {
        echo"subba";
              }

        müsste doch "subba" ausgeben - tut es aber nicht! Warum ??

        Hm, stimmt. crypt gibt nicht immer das gleiche Resultat aus, also sind die beiden Strings auch nicht identisch. Versuchs mal so, wie in diesem Thread auch schon erklärt wurde, nämlich mit md5:

        if ( md5("test")==md5("test"))
              {
          echo"subba";
               }

        ich bin mir jetzt nicht ganz sicher, aber ich denke im gegensatz zu crypt kann man den md5-Wert wieder zurückübersetzen, was natürlich ein gewisses Sicherheitsrisiko ist. Kann mich aber auch täuschen, dann soll mich bitte jemand korrigieren :-)

        Gruss, sprain

        1. Hi Flo,

          Aber warum läuft der Abgleich von Paswörtern nicht so, wie beschrieben:

          if ( crypt("test")==crypt("test"))
               {
          echo"subba";
                }

          müsste doch "subba" ausgeben - tut es aber nicht! Warum ??

          Hm, stimmt. crypt gibt nicht immer das gleiche Resultat aus, also sind die beiden Strings auch nicht identisch. Versuchs mal so, wie in diesem Thread auch schon erklärt wurde, nämlich mit md5:

          if ( md5("test")==md5("test"))
                {
            echo"subba";
                 }

          ich bin mir jetzt nicht ganz sicher, aber ich denke im gegensatz zu crypt kann man den md5-Wert wieder zurückübersetzen, was natürlich ein gewisses Sicherheitsrisiko ist. Kann mich aber auch täuschen, dann soll mich bitte jemand korrigieren :-)

          Gruss, sprain

          Ja! Was sollich sagen ?

          subba ;)

          Danke!!!
          Flo

        2. Hallo,

          ich bin mir jetzt nicht ganz sicher, aber ich denke im gegensatz zu crypt kann man den md5-Wert wieder zurückübersetzen, was natürlich ein gewisses Sicherheitsrisiko ist. Kann mich aber auch täuschen, dann soll mich bitte jemand korrigieren :-)

          Nein. Man kann ihn nicht "Rückübersetzen".

          Gruss
             MichaelB

          1. Hallo,

            Nein. Man kann ihn nicht "Rückübersetzen".

            Umso besser! Danke!

            Gruss, sprain

      2. Hi Flo,

        if ( crypt("test")==crypt("test"))
             {
        echo"subba";
              }

        müsste doch "subba" ausgeben - tut es aber nicht! Warum ??

        crypt() benötigt zwei Parameter: Ein Passwort und ein "salt".
        Anscheinend würfelt sich Deine crypt()-API ein salt aus, wenn Du keines
        angibst - dann kommen natürlich nicht zwei gleiche Ergebnisse heraus.

        Das salt steht in einem gecrypt()eten Passwort in den ersten beiden Zeichen

        • damit kannst Du herausfinden, wie das vom Benutzer angebotene Passwort
          gecrypt()et werden muß, und anschließend vergleichen.

        Viele Grüße
              Michael

  2. Hallo,

    Geht das irgendwie? Gibt es in PHP eine Prozedur zum ver- und etnschlüsseln bestimmter Zeichenketten ???
    Oder kann das sogar MySQL irgendwie ???

    Eine Moeglichkeit ist die Speicherung des MD5-Hashes in der DB und der spaetere Vergleich des wiederum kodierten eingegebenen Passwortes.
    Siehe die md5()-Funktion in PHP und MySQL.

    MfG, Thomas