[PHP]Login-SCript für xAuth?

Dieses Thema im Forum "Programmierung" wurde erstellt von GermanUbuntu, 16. Januar 2014.

  1. GermanUbuntu
    Online

    GermanUbuntu

    Hallo Leute,

    Ich arbeite gerade an einem Login-Script für xAuth
    Code (Text):
    1.  
    2. <?php
    3. session_start();
    4. ?>
    5.  
    6. <?php
    7. $verbindung = mysql_connect("localhost", "root" , "")
    8. or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    9. mysql_select_db("xauth") or die ("Datenbank konnte nicht ausgewählt werden");
    10.  
    11. $username = "BENUTZER";
    12. $passwort = "PASSWORT";
    13.  
    14. $abfrage = "SELECT playername, password FROM accounts WHERE playername LIKE '$username' LIMIT 1";
    15. $ergebnis = mysql_query($abfrage);
    16. $row = mysql_fetch_object($ergebnis);
    17.  
    18. if(md5($row->password) == $passwort)
    19.     {
    20.     $_SESSION["playername"] = $username;
    21.     echo "Login erfolgreich.";
    22.     }
    23. else
    24.     {
    25.     echo "Benutzername und/oder Passwort waren falsch.";
    26.     }
    27.  
    28. ?>
    29.  
    Doch leider kommt im Moment nur ein fehler:
    Benutzername und/oder Passwort waren falsch.

    So dann habe ich mall einen Benutzer selber erstellt(ohne Verschlüsselung)

    damit klapt das...
    was mache ich falsch?
     
    #1
  2. Chrisliebaer
    Online

    Chrisliebaer

    http://de.wikipedia.org/wiki/SQL-Injection

    Les dir das durch. Du arbeitest da mit Klartextpasswörtern und hast absolut kein Plan über Sicherheit. Das ist grundsätzlich eine sehr gefährliche Kombination.


    Code (Text):
    1. if(md5($row->password) == $passwort)
    und das soll vermutlich so aussehen:

    Code (Text):
    1. if($row->password == md5($passwort))
     
    #2
  3. GermanUbuntu
    Online

    GermanUbuntu

    Okay

    Okay,
    Das kapiere ich...

    heißt ich muss solche sachen wie z.b =, "" blocken? richtig?

    EDIT
    So, okay ich glaube es handelt sich bei xAuth um eine andere Verschlüsselung...
     
    #3
  4. Chrisliebaer
    Online

    Chrisliebaer

    #4
  5. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Wie chris schon sagte hast du da eine sql-injection Lücke drin, aber das ist noch nicht alles.
    Werte in PHP NIEMALS mit "==" vergleichen, wenn du pech hast castet dir "==" den string zu einer nummer,
    und ausserdem vergleicht er unter umständen nicht den ganzen String, benutze IMMER "===" oder eine andere
    passende funktion.
    http://phpsadness.com/sad/47

    Weiters benutzt du die veraltete mysql_ extension, diese wird in kommenden php releases entfernt.
    Benutze entweder mysqli_ oder noch besser PDO.

    In diesem fall eh hinfällig weil du die xauth daten nutzen musst aber:
    Passwörter nur mit md5 zu hashen ist grob fahrlässig, bitte nutze einen passenden algorithmus wie
    SHA256, SHA512 oder noch besser Bcrypt. Dann solltest du das passwort mit mehr als einer runde hashen (solltest du nicht bcrypt nutzen), hashe es mit mindestens 10000+ runden. Dann fehlt deinen passwörtern auch noch der Salt, bitte während des hashens immer einen passwortspezifischen salt string zuführen, sonst kann ein Angreifer viel leichter alle Passwörter knacken.
    http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords/31846#31846
     
    #5
  6. TheCreeperFX
    Offline

    TheCreeperFX

    Registriert seit:
    27. Dezember 2013
    Beiträge:
    0
    Da hat der Benni woll recht :-D
    Dennoch ist schwer zu verstehen,weil das nicht wirklich geordnet ist.
    Beispiel:
    Hashe mit 10000+.Dann noch....Achja und während des Hashens musst du....
    Naja das wars von mir.
    Hat jetzt nicht wirklich was mit dem Problem zutun,aber mir ist das halt aufgefallen.

    MFG Creeper
     
    #6