Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 22 von 22

Thema: MySQL-Error

  1. #16
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Bist du sicher, dass die Auswahl der Datenbank klappt?
    Könntest mal testweise den SELECT-Query so umbauen: ... FROM login.auth ...

    Und was gibt dieser Befehl aus (vor das "if" packen)?
    Code:
    var_dump(mysql_num_rows($result));

  2. #17
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Ja das bin ich mir sicher denn wen ich mich mit einem User ohne Passwort anmelde funtioniert es.
    Code:
    Könntest mal testweise den SELECT-Query so umbauen: ... FROM login.auth ...
    Sorry hab ich nicht ganz verstanden was du meinst.

    Code:
    var_dump(mysql_num_rows($result));
    Das gibt ein
    Code:
    int(0)
    zurück.
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  3. #18
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Jetzt habe ich auch noch herausgefunden:

    Wenn ich einen neuen Eintrag in die MySQL mache bei dem das Passwort unverschlüsselt ist funktioniert es auch sprich es liegt irgendwie an der verschlüsslung.

    Hier nochmals der Code:

    PHP-Code:
    <?php
        error_reporting
    (E_ALL);
        require (
    "../config.php");    //include config file
        
    connect();                //connect database
        
    select_db_login();        //select database
        //Login prüfen 
        
    $sql =     "SELECT
                        id,
                        user,
                        password
                FROM
                        auth
                WHERE
                        (user = '"
    .mysql_real_escape_string($_POST['user'])."')
                AND 
                        (password =PASSWORD('"
    .mysql_real_escape_string($_POST['password'])."'))
                "
    ;
        
    $result mysql_query ($sql);
        if (
    mysql_num_rows($result) > 0
        { 
        
    header("Location: loged_in.html");
        } 
        else 
        { 
        echo 
    "fehler";
          
    //header ("Location: style.css"); 
        
    }
    ?>
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  4. #19
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Welchen Datentyp hat in der MySQL-Tabelle die Spalte "password"?

  5. #20
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    varchar(30)
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  6. #21
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von linuxjohnny Beitrag anzeigen
    varchar(30)
    Dann kann das ja nicht gehen ...
    Wie hier steht http://dev.mysql.com/doc/refman/5.0/...d-hashing.html sind die Hashes von PASSWORD() immer 41 Byte lang. Und wenn du 41 Zeichen in ein 30-Zeichen-Feld einträgst, wird der Rest verworfen.

    Abgesehen davon soll man PASSWORD() ja eh nicht nutzen: http://dev.mysql.com/doc/refman/5.0/...ction_password

    Und da du das nun eh umschreibst, kannst du auch gleich einen Salted Hash - siehe http://de.wikipedia.org/wiki/Salted_Hash - nehmen (hierfür die Spalte password auf varchar(40) ändern, da SHA1 20 Byte lang ist, also hexadezimal angegeben 40 Byte):
    Code:
    ... WHERE
    (user = '".mysql_real_escape_string($_POST['user'])."')
    AND
    (password ='".sha1($_POST['password'] . SALT)."')
    SALT wird in der config.php definiert:
    PHP-Code:
    define('SALT''hier irgendeine zufällige Zeichenfolge eintragen'); 
    Noch sicherer ist es, wenn jeder User einen anderen Salt hat, also kannst du das auch gleich noch machen:
    Die Tabelle auth kriegt eine zusätzliche Spalte salt (z.B. irgendein varchar). Beim Anlegen eines Users und bei jeder Passwortänderung wird diese mit einem zufälligen String gefüllt. Die Abfrage würde dann so aussehen:
    Code:
    ... WHERE
    (user = '".mysql_real_escape_string($_POST['user'])."')
    AND
    (password = SHA1(CONCAT(salt, '".sha1($_POST['password'] . SALT)."')))
    Damit hättest du also zwei Salts und doppeltes Hashing (eines durchgeführt in PHP, damit das Passwort nicht in Klartext an den SQL-Server übertragen werden muss).

    Neuen User anlegen:
    PHP-Code:
    $salt zufallsfunktion();
    $hash sha1($salt sha1($password SALT));
    query("INSERT INTO ... VALUES (..., '".mysql_real_escape_string($salt)."', '$hash')"); 

  7. #22
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Hi,

    Vielen Dank erst mal für eure Antworten ich werde das bei Gelegenheit mal ausprobieren.
    Wenn's nicht klappt melde ich mich wieder

    MFG

    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •