Objektorientiert zu Prozedural (PHP)

  • Also es ist ja nun Unfug in einem Forum um Hilfe bei einem Code zu Fragen, wenn die Datenquelle (Wie wird das Passwort erstellt?) unklar ist, weil man keinen Zugriff darauf hat.
    Klär bitte ab, wie das Passwort gehasht (nicht verschlüsselt) wird und dann kann man dir auch helfen. Offensichtlich unterscheidet sich bereits der Wert in der Datenbank und das Ergebnis des Hash- und Saltvorgangs im Webinterface. Entsprechend wird das Problem wohl im jeweiligen Verfahren liegen.

  • Gut, das ändert natürlich die Ausgangslage etwas. Fang vielleicht damit an den Code etwas zu sortieren. Das Ergebnis der jeweiligen Anweisungen, die sich jetzt in der If-Clause befinden in eine Variable schreiben.
    Dann einfach mal die Variablen dumpen und hier posten. Am besten Schritt für Schritt und dann den Unterschied eingrenzen.

  • Einmal die Dumps. 3 Zeichen wurden jeweils durch "X" ersetzt da ich leider nur meinen acc zum test habe.


    VAR nutzername: NotNull //Nutzername (POST)
    VAR passwort: c48cXXX64c //Passwort (POST)
    VAR salt: }U drx05z[yG| 4O //Salt (Aus der Datenbank)
    VAR check: AD5B0723FC80EXXXC9E565E68AA63095 (Generierter Hash aus Passwort und Salt)

  • Mensch sind ja echt bescheidene Umstände zum Arbeiten bei dir. Und die Vergleichdumps wären noch ganz praktisch, sonst bringt das nicht viel. Also einmal vom Ausgangscode und dann von dem was du schon verändert hast.

  • Originalcode (Teilweise vom UCP von @ReWrite):



    Ist Code:


    EDIT: Fast vergessen, die Funktion getPlayerSalt()

    PHP: /system/functions/all.php
    #Liest den Salt des Spielers aus
    function getPlayerSalt($player) {
    global $db;
    $sql = "SELECT `Salt` FROM `players`";
    $result = mysqli_query($db, $sql);
    $row = mysqli_fetch_assoc($result);
    return $row["Salt"];
    }
  • Oh mein gott... ich sollte langsam mal schlafen gehen.
    Das Problem wurde gelöst, schuld daran war, wer hätte es anders gedacht, der Depp von Coder der das gebastelt hat, also ich :'D


    Hier einmal der Fehler:

    PHP
    #Liest den Salt des Spielers aus
    function getPlayerSalt($player) {
    global $db;
    $sql = "SELECT `Salt` FROM `players` WHERE `Name` = '" .$player. "'";
    $result = mysqli_query($db, $sql);
    $row = mysqli_fetch_assoc($result);
    return $row["Salt"];
    }

    In Zeile 4 wird die SQL Abfrage zusammen gebaut, ich depp vergaß natürlich zu spezifizieren welchen Spieler ich anwählen möchte... somit hat er den allerletzten Datensatz eingelesen statt dem spezifizierten Spieler, kein wunder das der Hash immer falsch generiert wurde. Ich bedanke mich bei allen für Ihre kostbare Zeit und die Hilfe.

  • Wieso wird dort jetzt eine salt+hash Variante mit dem rohen Input verglichen? Natürlich sind die nicht identisch. Ich habe mir gerade nochmal deinen Ausgangscode auf der vorherigen Seite angeschaut. Was macht diese getPasswort (das t triggert hart) eigentlich? Kommt da eine salted Variante bei raus? Sonst müsstest du das ja auch noch machen, sonst passt der Vergleich nicht.
    /e Deinen Nachtrag muss ich mir jetzt erstmal angucken.. :S
    /e2 Na dann ist ja alles tutti. P.S.: Bitte mach aus getPasswort getPassword. Das is echt kacke.

  • Wieso wird dort jetzt eine salt+hash Variante mit dem rohen Input verglichen? Natürlich sind die nicht identisch. Ich habe mir gerade nochmal deinen Ausgangscode auf der vorherigen Seite angeschaut. Was macht diese getPasswort (das t triggert hart)
    /e2 Na dann ist ja alles tutti. P.S.: Bitte mach aus getPasswort getPassword. Das is echt kacke.

    Zu Punkt 1:
    Ja, das war auch ein Fehler von mir, Ich muss ja das gehashte Passwort mit dem aus der DB vergleichen :'ÄD


    Zu Punkt 2:
    Sei unbesorgt, das getPasswort() war vom OOP ding, im Prozeduralen teil habe ich die Funktion getPlayerPasswort() geschrieben ^^

  • Oh mein gott... ich sollte langsam mal schlafen gehen.
    Das Problem wurde gelöst, schuld daran war, wer hätte es anders gedacht, der Depp von Coder der das gebastelt hat, also ich :'D


    Hier einmal der Fehler:

    PHP
    #Liest den Salt des Spielers aus
    function getPlayerSalt($player) {
    global $db;
    $sql = "SELECT `Salt` FROM `players` WHERE `Name` = '" .$player. "'";
    $result = mysqli_query($db, $sql);
    $row = mysqli_fetch_assoc($result);
    return $row["Salt"];
    }

    In Zeile 4 wird die SQL Abfrage zusammen gebaut, ich depp vergaß natürlich zu spezifizieren welchen Spieler ich anwählen möchte... somit hat er den allerletzten Datensatz eingelesen statt dem spezifizierten Spieler, kein wunder das der Hash immer falsch generiert wurde. Ich bedanke mich bei allen für Ihre kostbare Zeit und die Hilfe.

    Das ist aber jetzt nicht dein ernst oder?? :S Bitte sag nicht das dass dein ernst ist.. Wenn du soetwas gegen bezahlung ablieferst würde ich deinem "Klienten" direkt raten jemanden anderen zu suchen. Ich hoffe einfach mal das dass nicht dein ernst war/ist. Ich hoffe du bist dir bewusst das du, wenn du alle SQL Queries so geschrieben hast das ganze Skript volle SQL Injections ist. :thumbdown:


    EDIT:
    Und das Thema hier ist auch ein Witz.. Es ist 2018. Du solltest eventuell mit der Zeit gehen und dich hinhocken und OOP lernen.

  • Das ist aber jetzt nicht dein ernst oder?? :S Bitte sag nicht das dass dein ernst ist.. Wenn du soetwas gegen bezahlung ablieferst würde ich deinem "Klienten" direkt raten jemanden anderen zu suchen. Ich hoffe einfach mal das dass nicht dein ernst war/ist. Ich hoffe du bist dir bewusst das du, wenn du alle SQL Queries so geschrieben hast das ganze Skript volle SQL Injections ist. :thumbdown:
    EDIT:
    Und das Thema hier ist auch ein Witz.. Es ist 2018. Du solltest eventuell mit der Zeit gehen und dich hinhocken und OOP lernen.

    Ich glaube du hast noch nie in meine Signatur geschaut, ich mache das weder Professionell noch gegen Bezahlung. Zudem bin ich immernoch Auszubildender und muss aktuell ein wenig anderes lernen. Da ist ein komplett neuer Scripting Stil grade ein wenig zu viel des Guten. Man kann ja nicht einen Schritt vor dem anderen setzen.
    Das nächste ist das der von dir zitierte Code Ausschnitt natürlich nicht escsped ist, dies passiert alles im Login System welches auch noch erweitert wurde. Mit freundlichen Grüßen.


    #Handy

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!