Thread Verfasser: thomiel
Thread ID: 1190
Thread Info
Es gibt 11 Beiträge zu diesem Thema, und es wurde 4277 Mal angesehen.
 Thema drucken
Nach Upgrade auf 7.02.07 kann sich kein Nutzer mehr einloggen
thomiel
Der Passwort-Hash wurde von md5 auf sha256 umgestellt. Dass ist ja auch vernünftig. User, die nur einen md5 haben, können sich jetzt aber nicht mehr einloggen. Ich hätte gedacht, dass beim ersten Einloggen automatisch umgestellt wird oder es zumindest eine Funktion gibt, den Nutzern neue Passwörter zuzuschicken. So wie es jetzt ist verliere ich die Nutzer einfach. Das kann doch nicht der Sinn sein...
 
John Doe
Hast du denn direkt von der 7.00.00 auf die 7.02.07 hochgezogen?

Wenn ja, liegt da der Fehler. Du musst schon jedes einzelne Upgrade von Version zu Version durchführen. Also erst die ganzen 7.00.xx Upgrades dann die 7.01.xx Reihe usw.
 
Septron
Hallo,

eine Liste der PHP-Versionen findest du auch hier: PHP-Fusion - Die Version Liste (ab v7.00.xx is v9 RC4)

da du schon ein Update vollzogen hast wirst du von jeder Version ein Update nehmen müssen damit sich die werte nach und nach anpassen.

lg Septron
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
thomiel
Ich habe, wie in der Update-Info empfohlen, in schön kleinen Schritten, von der 7.00 auf die 7.01 und dann auf die 7.02.07 geupdatet.
 
Zitat: Septron schrieb:

Hallo,

eine Liste der PHP-Versionen findest du auch hier: PHP-Fusion - Die Version Liste (ab v7.00.xx is v9 RC4)

da du schon ein Update vollzogen hast wirst du von jeder Version ein Update nehmen müssen damit sich die werte nach und nach anpassen.

lg Septron

deine liste funktioniert auch nicht download V9 RC4 und V9 RC3
ich würde das mal selber ausprobieren Septron
lg Brauchst du screenshots um das zu bestätigen
 
Septron
Hallo,

sollte nun wieder funktionieren Wink

lg Septron
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
thomiel
Ich glaube nicht, dass es einen Passwort-Konverter gibt, der nur in einem bestimmten minor update enthalten war. Man kann keinen md5 so leicht in einen sha256 umwandeln.

Vielmehr kann die Konvertierung doch nur beim Login eines Nutzers erfolgen, weil nur dann das Passwort als Klartext vorliegt und neu gehashed werden kann. Aber dieser Mechanismus funktioniert offensichtlich nicht oder wurde absichtlich deaktivert.

Kann ich den irgendwie reaktiveren?

Das muss doch irgendwie gehen! Ich meine, sonst hätten doch ganz viele sites massenhaft user verloren und es hätte einen Aufschrei bei den Admins gegeben... Wo ist mein Fehler?
 
Septron
Hallo,

die umwandlung erfolgt durch die einzelnen updates das ist schon so richtig und funktioniert auch so es ist klar das es natürlich nicht funktioniert von 7.00.00 auf 7.02.07 oder 7.01.00 auf 7.02.07 von der Version 6 sollte man schon die einzelnen Update schritte befolgen auch wenn es aufwendig ist.

Ich selber habe jedes Upgrade vollzogen:
- 6.01.15 (habe ich als einstiegs testzwecke genutzt)
- 7.00.05 Core
- 7.00.06 - 7.00.07 Upgrade
- 7.01.00 upgrade
- 7.01.01 upgrade
- 7.01.02 upgrade
- 7.01.03 upgrade
- 7.01.04 upgrade
- 7.01.05 upgrade
- 7.01.06 upgrade (ab dort folgt der wechsel)
- 7.02.00 upgrade
- 7.02.01 upgrade
- 7.02.02 upgrade
- 7.02.03 upgrade
- 7.02.04 upgrade
- 7.02.05 upgrade
- 7.02.06 upgrade
- 7.02.07 upgrade

lg Septron
Bearbeitet von Septron am 16.01.2017 um 17:30
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
thomiel
Zitat: Septron schrieb:die umwandlung erfolgt durch die einzelnen updates das ist schon so richtig und funktioniert auch so es ist klar das es natürlich nicht funktioniert von 7.00.00 auf 7.02.07 oder 7.01.00 auf 7.02.07 von der Version 6 sollte man schon die einzelnen Update schritte befolgen auch wenn es aufwendig ist.

...

- 7.01.06 upgrade (ab dort folgt der wechsel)


Die Einführung der neuen Passwort-Hashes geschieht in der v7.02.00. Und das v701-Upgrade-Script ist, was die Passwörter angeht, seit der v7.02.00 bis zur v7.02.07 gleich geblieben:

Code 

      // New user password fields (algo, and salt)
      $result = dbquery("ALTER TABLE ".DB_USERS." ADD user_algo VARCHAR( 10 ) NOT NULL DEFAULT 'md5' AFTER user_name ,
         ADD user_salt VARCHAR(40) NOT NULL AFTER user_algo");
      $result = dbquery("ALTER TABLE ".DB_USERS." ADD user_admin_algo VARCHAR( 10 ) NOT NULL DEFAULT 'md5' AFTER user_password ,
         ADD user_admin_salt VARCHAR(40) NOT NULL AFTER user_admin_algo");
      $result = dbquery("ALTER TABLE ".DB_USERS." CHANGE user_password user_password VARCHAR(64) NOT NULL");
      $result = dbquery("ALTER TABLE ".DB_USERS." CHANGE user_admin_password user_admin_password VARCHAR(64) NOT NULL");
      $result = dbquery("ALTER TABLE ".DB_NEW_USERS." CHANGE user_code user_code VARCHAR(40) NOT NULL");


Deshalb hätte es nichts gebracht, wenn ich sämtliche 7.02.0x Versionen einzeln geupdatet hätte. Mir geht es darum wie ich das nachträglich patchen kann, so dass die Site alte md5-Hashes erlaubt. Die Datenbankstruktur legt nahe, dass beide Algorithmen möglich sind. Aber offensichtlich ist md5 broken.

Zusammengefügt am 17. Januar 2017 um 15:25:12:
Ich habe es jetzt herausbekommen. Irgendwann habe ich wohl tatsächlich ein upgrade in v6 übersprungen, bei dem jemand die tolle Idee hatte, dass md5 sicherer wird, wenn man den Algorithmus doppelt anwendet.

in includes/classes/PasswordAuth.class.php:

Code 

   // Encrypts the password with given algorithm and salt
   private function _hashPassword($password, $algorithm, $salt) {
      if ($algorithm != "md5") {
         return hash_hmac($algorithm, $password, $salt);
      } else {
         return md5(md5($password));
      }
   }



In Zeile 104 habe ich jetzt aus

Code 

return md5(md5($password))

ein

Code 

return md5($password)

gemacht und jetzt geht es wieder.

in function _authenticate() habe ich

Code 

if ($passAuth->isValidCurrentPassword(true)) {


in

Code 

if ($passAuth->isValidCurrentPassword(false)) {


umgewandelt und lebe jetzt mit den alten md5 gehashten Passwörten.
Bearbeitet von thomiel am 17.01.2017 um 15:25
 
phpfusion läuft auch unter Php 7.1..
Frag Harlekin und Septron
nehmt das Merry chrismax von der Webseite wie lange habt ihr eigentlich weihnachen ihr seitenadmins
 
Septron
Hallo,

wieso ich ?
damit habe ich doch nichts zu tun wtf ?

lg Septron
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
Springe ins Forum: