Ankündigung

Einklappen
Keine Ankündigung bisher.

datenbanken passwortabfrage

Einklappen

Neue Werbung 2019

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

  • datenbanken passwortabfrage

    Hallo,

    ich muss ein login Skript programmieren, bei dem die Daten in einer Datenbank stehen.

    Die Daten lese ich mit select aus der Datenbank:

    PHP-Code:
    $sqlselect "SELECT benutzername, passwort FROM werte"
    Dann habe ich eine Schleife, die über die Datenbank iteriert:

    PHP-Code:
    while($row mysql_fetch_row($ergebnissql)){
             echo 
    '<p>Benutzername: </p>' $row[0];
           echo 
    '<p>Passwort: </p>' $row[1];
          
    /*if($benutzername == $row[0] and $pass == $row[1]){
             echo '<p>Sie haben sich erfolgreich angemeldet.</p>';
             echo '<a href="willkommen.html">Willkommen</a>';
           }*/
           
    if($benutzername != $row[0]){
             echo 
    '<p>Fehler bei Anmeldung. Sie haben einen falschen Benutzernamen eingegeben.</p>';
             die(
    "Fehler bei Anmeldung");
           }
           if(
    $pass != $row[1]){
             echo 
    '<p>Fehler bei Anmeldung. Sie haben ein falsches Passwort eingegeben.</p>';
             die(
    "Fehler bei Anmeldung");
           }
           
    /*if($benutzername != $row[0] and $pass != $row[1]){
             echo '<p>Fehler bei Anmeldung.</p>';
             die("Fehler bei Anmeldung");
           
           }*/ 
    Mein Ziel ist einfach, die eingegebenen Daten mit den Daten in der Datenbank zu vergleichen.

    Es soll mit Sessions einfacher sein, aber ich versuche das erst mal so.

    Danke


  • #2
    Zitat von aschunk Beitrag anzeigen
    Dann habe ich eine Schleife, die über die Datenbank iteriert:
    Das ist Quatsch.

    Frage die Datenbank explizit nach einem Datensatz mit dem eingegebenen Usernamen und Passwort - und ziehe aus der Anzahl der Ergebnisdatensätze den logischen Schluss.

    (Man könnte auch nur den Usernamen vergleichen, und dann das Passwort separat prüfen, wenn man dem Nutzer bei fehlerhaftem Login den Grund mitteilen will, wie im Beispielcode. Davon ist aber eher abzuraten, weil es einen zusätzlichen Angriffsvektor liefert.)
    Mein Ziel ist einfach, die eingegebenen Daten mit den Daten in der Datenbank zu vergleichen.
    Toll, dass du uns das mitteilst. Fragen hast du keine ...?

    Kommentar


    • #3
      Wo ist deine Frage? Und man benutzt üblicherweise Sessions und eine Datenbank und ggf. noch Cookies (am besten Passwörter verschlüsselt abspeichern und auf SQL Injection achten)!

      Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Hallo,

        mein Problem ist, das ich be einem falschen Login immer nur die Meldung bekomme "Sie haben einen falschen Benutzernamen eingegeben."

        Das Programm springt irgendwie nicht in die anderen Fälle, also nur falsches Passwort oder beides falsch. Daran hängts.

        Das mit der Verschlüsselung betrachte ich als nettes feature. Könnte man mit der Funktion md5 machen.

        Mein Problem ist einfach, dass das Skript nicht die anderen Fälle abfragt.

        Kommentar


        • #5
          So, erst einmal machst Du die Passwort Abfrage direkt übers SQL Statement am besten (wie schon erwähnt) mit escapen und dann hast du ja auch mit "die()" nur Ausgaben! Sammel mögliche Fehlermeldungen doch z.B. in einem Array und laß es dann ausgeben (+ evtl. noch mögliche MySQL Fehler mit mysql_error() ).

          Dein SQL Statement sollte ungefähr so aussehen:

          //Post Werte vorher noch maskieren mit http://de.php.net/manual/de/function...ape-string.php
          SELECT password, username FROM meineTabelle WHERE username = '".$username."' AND password = '".md5($password)."'

          Wolf29
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            Das mit der Verschlüsselung betrachte ich als nettes feature. Könnte man mit der Funktion md5 machen.
            kein nettes feature, sondern notwendig. md5 ist veraltet.. besser: sha



            Das Programm springt irgendwie nicht in die anderen Fälle, also nur falsches Passwort oder beides falsch. Daran hängts.
            und wie chris schon sagte.. das machts dem angreifer nur leichter.. teil dem nutzer einfach mit Benutzername und/oder Passwort falsch..

            Kommentar

            Lädt...
            X