Brauche Rat bei einem PHP - MySQL Login System

  • PHP

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von Orion.

    Ich habe mich hier auf die MySQLi-Snippets bezogen, die der TE gepostet hat. PDO/Prepared Statements wurde hier ja schon angemerkt (was auch bevorzugt werden sollte).
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Okay, Danke soweit, habe jetzt mal den Code strukturiert und formatiert und mach mich an den Rest der noch nicht gemacht ist wie die Prepared Statements und Escapes. Ich hab jetzt mal das ganze Paket was ich schon mal an Daten hab auf einen anderen Host umgezogen der Online steht aber per Loginmaske vom Hostanbieter abgesichert ist. Hab ganz normal die Datenbank exportiert und importiert und die Con Einstellungen im Code geändert, kann auch verbinden und alles läuft. Nur bei meinem SHA256 mit Salt Login sind die Daten jetzt inkorrekt und ich komm sozusagen nicht mehr ins Adminpanel. Was kann da jetzt falsch gelaufen sein?

    EDIT: Hab den Fehler wieder gefunden. Irgendwie hat ers nicht gelesen wenn ich die DB im Con String mitgegeben habe. Wenn ich die nach dem Verbinden angebe funktioniert es aber.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Orion“ ()

    Du möchtest evtl. ein neueres/besseres Verfahren als SHA2-Hashes nutzen. Die sind zwar noch ganz OK, aber nicht toll.

    php.net/manual/de/function.password-hash.php
    Hier gibt es entsprechende Beispiele für neuere Methoden wie bcrypt.

    Viele Grüße,
    Manawyrm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()

    Okay, Danke schau ich mir gleich an. Ich stell erstmal den Code sauber um und dann kann ich ja noch weiter probieren. Was spricht eigentlich dagegen, zum Beispiel das Passwort ca. 10 mal mit verschiedenen Algorithmen zu verschlüsseln und umgekehrt? Kann man da nicht theoretisch auch 10 verschiedene Salts reinmixen und ins unendliche treiben mit dem ganzen?
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dagegen spricht, dass ein Hashing-Algorithmus ja bereits den Datenbestand auf wenige Bytes verringert. Wenn du das dann nochmals Hashst, erstellst du nur einen Hash über die paar Bytes und hast effektiv eig. alles nur noch schlimmer gemacht ;)
    Außerdem müsstest du dann auch noch erst den Hex-String der Hashing-Funktion wieder in Binärdaten konvertieren, damit deine Hashfunktion vernünftig arbeiten kann.

    Was noch halbwegs gut klappen könnte, wäre mehrere Hashs gleichzeitig zu speichern, das bringt allerdings sicherheitstechnisch keine Vorteile, eher Nachteile. Wenn dann jemand die DB klaut, kann er wahrs. z.B. aus dem MD5 brute-forcen, dass das Kennwort 123456 ist, dann hilft der bcrypt-Hash auch nichts mehr.

    Also: 1 gute Hash-Implementation bestimmungsgemäß verwenden und gut ist.. (bei bcrypt brauchst du selbst auch keinen Salt mehr einrechnen!)

    Viele Grüße,
    Manawyrm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()

    Habe jetzt SHA512 implementiert und MySQLi überall angewendet. Ist SHA512 nicht ausreichend? Ist so ein einfacher kleiner Teil der zu ändern war, ansonsten müsste ich nochmal schauen wie das mit Bcrypt genau geht.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Da du anscheinend wenig Ahnung von Sicherheit (nicht persönlich gemeint) hast, wäre es klug sich entweder ausführlich in die Materie einzuarbeiten oder auf Leute zu vertrauen, die sich damit auskennen.
    Letztere haben für dich Funktionen bereitgestellt, die dir alles abnehmen und nach dem Stand der Technik wohl sicher sein sollten:
    php.net/manual/en/function.password-hash.php
    php.net/manual/en/function.password-verify.php

    Und falls nicht die erforderliche PHP Version (5.5.0) zur Verfügung steht, kannst du z.B. github.com/ircmaxell/password_compat nutzen.
    Danke, dann überarbeite ich das nochmal, wie schon gesagt im Anfangsthread, das hier ist mein erstes Projekt in Form einer Webapp, ausserdem musste ich bisher keine Logins und Registrierungssysteme bauen von daher, ja ich hab wenig Ahnung von Sicherheit in der Sache.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)