Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Passwörter in Datenbank ablegen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Passwörter in Datenbank ablegen

    Also ich habe folgendes Problem:
    Ich habe eine Seite die die Zugriffsrechte mit .htacces verwaltet.

    Jetzt möchte ich die Benutzernamen und Passwörter aber in eine MySQL DB bekommen.
    Meine Idee war die verschlüsselten Passwörter einfach in die DB zu kopieren und wenn sich dann jemand anmelden möchte verschlüsslet ein Script das eingegebenes Passwort und vergleich es mit dem welches in der DB steht.
    Die Frage ist jetzt nur mit welchem Algorithmus werden htacces Passwörter verschlüsselt?
    Meine mal gelesen zu haben, dass das crypt ist.
    Aber wenn ich in PHP $passwort = crypt($eingegebenes_passwort); mache und das dann mit dem Passwort aus der DB vergleiche (if ($db_pass = $pass) $access = true, dann bekomme ich keinen Zugriff.
    Daraufhin habe ich mir die beiden Werte mal ausgeben lassen.
    Das Passwort aus der DB war korrekt aber das von mir eingegebene wurde irgendwie auf eine andere Art und Weise verschlüßelt, sodass meine Idee nicht funktionierte ...

    Hoffe es kann mir jemand helfen.

    Gruß
    Covington

  • #2
    Was hat das mit der DB mit dem Allgo von der Passwort-Verschlüsselung bei .htaccess zutun? Wenn du Passwörter verschlüsseln willst gehts am besten mit md5(), weils nen Einweg-Hash ist, der ned so schnell :P entschlüsselt werden kann ^^.

    Kommentar


    • #3
      Der Zusammenhang ist folgender:
      ich habe schon eine ganze datei voll verschlüsselter passwörter (nämlich die .htaccess datei). und die passwörter sollen jetzt in eine datenbank.
      das hat auch alles bestens funktioerniert.
      mein problem war jetzt das das passwort welches der benutzer eingibt bei der anmeldung genauso verschlüsselt wird wie die passwörter bei .htaccess (da ich das passwort nur dann mit den in der db vergleichen kann).

      konnte das problem aber inzwischen lösen, ging mit nem parameter den man crypt(), mitgeben kann.

      trotzdem danke

      Covington

      Kommentar


      • #4
        ich finde, wenn du schon hier nach einer Lösung fragst, und auf Hilfe hoffst, dass du ruhig mal deine gefundene Lösung posten kannst, also deinen Parameter, den du hinzugefügt hast, damit auch User, die dasselbe Problem haben, nicht nen Extrathread eröffnen müssen :wink:

        Kommentar


        • #5
          Zitat von phpdope
          ich finde, wenn du schon hier nach einer Lösung fragst, und auf Hilfe hoffst, dass du ruhig mal deine gefundene Lösung posten kannst, also deinen Parameter, den du hinzugefügt hast, damit auch User, die dasselbe Problem haben, nicht nen Extrathread eröffnen müssen :wink:
          Ich finde es schlimm genug das man sowas sagen muss!

          Kommentar


          • #6
            Hallo,
            tut mir leid, dass ich das nicht ausführlich gesagt habe.
            Hier nun meine Lösung:
            Code:
            $nick = $_SERVER['PHP_AUTH_USER'];
            $pass = $_SERVER['PHP_AUTH_PW'];
            $db_pass = @mysql_result(@mysql_query("select pass from tabellenname where nick = '$nick'"),0,0);
            $ht_pass = crypt($pass,substr($db_pass,0,2));
            if(($ht_pass != $db_pass) || ($db_pass == ""))
            {
              header("WWW-authenticate: basic realm=\"Intern\"");
              header("HTTP/1.0 401 Unauthorized");
              $page_content.= "
            <h2>Zugang verweigert!</h2>
            
            
            
            Du hast Daten eingeben die nicht in unserer Datenbank stehen.</p>";
            }
            else
            {
               $page_content.= "Sie sind nun eingeloggt";
            }
            Das endscheidende ist diese Zeile:
            $ht_pass = crypt($pass,substr($db_pass,0,2));
            Crypt nutzt verschiedene Algorithmen um Wörter zu verschlüsseln. Und über einen so genannten Salt kann ich ihm sagen was er genau tun soll.
            Wenn man nun ein Passwort mit dem aus der .htaccess datei vergleichen will, muss man crypt als zweiten parameter die ersten beiden Buchstaben des schon verschlüsselten Passwortes mitgeben.
            Genauer steht das ganze hier: http://de2.php.net/manual/de/function.crypt.php

            Hoffe ihr versteht was ich meine

            Gruß
            Covington[/url]

            Kommentar

            Lädt...
            X