Jump to content
Froxlor Forum

martinr

Members
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Neutral

About martinr

  • Rank
    Newbie
  1. Muss erstmal bis Samstag für einen Kunden durchpowern, dann schaue ich mir das an. Bin nicht so Community-/Open Source-erfahren (1 PR auf GitHub bisher ..), würde wenn ich es habe nochmal auf dich/euch zurückkommen, damit ich alles richtig & nichts kaputt mache
  2. Okay, verstehe, dass das wirr war. Versuche es deutlicher auszudrücken: (habe das nur für den Blowfish-Fall getestet) Ein gehashtes Passwort sieht zB folgendermaßen aus: "$2y$10$4YfB.o57aeHFiFKqZYBT0e1vSc3/Rp/hyeX0G11RtzjHusRqfOyBi". $pwd_salt = str_replace(substr(strrchr($pwd_hash, "$"), 1), "", $pwd_hash); Das ist Froxlor-Code (wie du verlinkt hast), $pwd_salt hat nun den Wert "$2y$10$". Wenn man nun (Froxlor-Code) $pwd_check = crypt($password, $pwd_salt); macht, kommt immer "*0" raus ("failure string"). Das liegt daran, dass "$2y$10$" nicht den ganzen Salt enthält. Zitat aus der Doku Man hat also $2y$ ("alles gut") und 10$ (cost parameter und $), aber nicht die 22 characters, die den Rest des Salts bilden. Leider scheint folgendes nicht zu funktionieren substr(strrchr($pwd_hash, "$")+22 da (bei meinen Tests) der letzte character des Salts nicht im gehashten Passwort war (zumindest nicht offensichtlich). Lösung wäre, wie vorgeschlagen folgendes $pwd_check = crypt($password, $pwd_hash); Oder (bevorzugt) das benutzen von password_verify() --- Kann das gerne als Bug posten, bevor das hier aus dem Ruder läuft.
  3. Ich glaube, so wie das mit crypt aktuell implentiert ist, fehlt der salt - die Methode funktioniert auf keiner PHP-Version laut 3v4l (Link). Sehe gerade nicht, wie man den Salt aus dem Hash auslesen kann (letzte Zeichen fehlt, hier Salt "..yxc", im Hash nur "..yx", also geht substr(..)+22 nicht). Aber wenn man den Salt weiß, funktioniert es so (Link) oder eben - wie auch von der Doku vorgeschlagen - mittels password_hash / password_verify. Kann mir das die Tage gerne mal genauer ansehen und evtl. einen Pull Request machen dann. Gerade im StackOverflow-Chat gewesen (Chat-Log): crypt($pwd, $hashed_pwd) === $hashed_pwd gilt, man kann also den kompletten Hash nehmen und braucht das str_replace(substr(strrchr( garnicht (nur getestet mit Blowfish). Generell wird aber zu password_verify() geraten anstatt normalen == Vergleich. Und für Kompabilität gibt es password_compat
  4. Hat geklappt, vielen Dank. Gibt es Pläne, das zu ändern? In der Regel wird ja von sha256/512 für Passwörter abgeraten. Habe ein Symfony auf dem Server, welches bcrypt benutzt - dort funktioniert alles.
  5. Hallo, habe vor Kurzem Froxlor auf einem Debian 8 mit PHP7 installiert. Soweit so gut, bis auf Let's Encrypt läuft auch alles (habe gesehen, dass es hier viele Threads zu gibt, aber noch keine Zeit gehabt, dem nachzugehen). Nun ist es geschehen, dass ich mich auf einmal nicht mehr einloggen kann (mit meinem Admin). Habe 2 Mal das Passwort zurückgesetzt (Link via Mail), nichts. Schaue ich in den Code und folgendes passiert: (in validatePasswordLogin) $pwd_check = crypt($password, $pwd_salt); Liefert immer "*0" (ohne Anführungszeichen). Habe $pwd_salt ausgelesen und lokal crypt damit ausgeführt, bei jedem Passwort kriege ich dieses Ergebnis. $pwd_salt hat den Wert "$2y$07$". Als Verschlüsselungsmethode ist BLOWFISH gewählt und password_verify mit dem in der Datenbank gespeicherten Wert liefert auch das gewünschte Ergebnis
×
×
  • Create New...