kann mir jemand bitte einmal unter die Arme greifen und weiterhelfen?
Ich verstehe nicht, was phpBB3 da warum und wieso mit meinen Passwort-Hashes macht.
Ich habe ein kleines phpBB2.0.20 mit 600 User und 20.000 Beiträge auf phpBB3.3.2 aktualisiert;
Alles soweit OK!
Nach dem konvertieren der phpBB2-DB funktionieren die ersten zwei Logins unterschiedlicher User im phpBB3 einwandfrei.
Danach gibt's bei weiteren User-Logins immer wieder sporadisch die Fehlermeldung:
Dazu gibt's hier im Forum zwei oder drei ähnliche Einträge - aber als Lösung kommt nur eher eine Kopfschmerztablette in der Art kurz im phpAdmin einen neuen Admin-Account anzulegen ... keine echt Ursachen/Problembeseitigung;Du hast ein falsches Passwort angegeben. Bitte prüfe dein Passwort und versuche es erneut. Wenn du weiterhin auf Probleme stößt, wende dich bitte an die Board-Administration.
Die Passwörter sind bei mir hier jeweils 100% korrekt (garantiert! weil - mal gehen diese und mal eben nicht) - ich habe hier die letzten 3 Tage massig getestet (20 Datenbanken, Imports/Exports etc.pp) und versucht heraus zu bekommen, was ich falsch mache.
Ich habe das Forum gefühlt 20 mal neu "konvertiert"; Ich habe massig DB-Backup in unterschiedlichen Stufen erstellt und mit diesen Versionsständen gespielt ...
Nach vielen Tests bin ich nun soweit gekommen, daß ich das Problem lokalisiert bekommen habe.
Ich weiß nun nur noch nicht - ist das Problem ein Feature oder und Fehler;

Der Passwort-Hashwert wird der zuvor konvertierten User-DB wiederholt verändert, so dass dieser im Anschluss ungültig wird.
Bei mir reproduzierbar.
Folgende Reihenfolge der Hashwerte in der phpbb_user im Field user_password nach der Konvertierung:
- -> phpBB2-User-Login: (md5)... (Login OK)
- -> phpBB3-User-Login: $CP$$H$9... (Login OK; -> Konvertierung nach $argon2id$ = Login OK)
- -> phpBB3 cron-job: $CP\2y$10... (Login fail!)
- -> Also nach der Konvertierung von phpBB2 auf phpBB3.3.2 wird der Hash-Wert $CP$$H$9... gebildet.
Mit diesem Hash-Wert können sich alle User anmelden!
. - -> Das Passwort wird sogleich mit dem Hash $argon2id$ gebildet und gespeichert - Login weiterhin OK.
. - -> Problem ist, dass bei jeder Anmeldung (im Abstand von >120 Sekunden) parallel im Hintergrund willkürlich weitere Passwörter in der DB (nur die mit $CP$$H$9) in 20er Schritten verändert werden und mit einem neuen Hash-Wert $CP\2y$10... versehen wieder gespeichert werden. Diese User mit nun diesem Hash-Wert $CP\2y$10... bekommen dann die Fehlermeldung "Du hast ein falsches Passwort angegeben..."
Datei: \phpbb\cron\task\core\update_hashes.php
Zeile: 95ff
Code: Alles auswählen
/**
* {@inheritdoc}
*/
public function run()
{
if ($this->update_lock->acquire())
{
$sql = 'SELECT user_id, user_password
FROM ' . USERS_TABLE . '
WHERE user_password ' . $this->db->sql_like_expression('$H$' . $this->db->get_any_char()) . '
OR user_password ' . $this->db->sql_like_expression('$CP$' . $this->db->get_any_char());
$result = $this->db->sql_query_limit($sql, 20);
$affected_rows = 0;
while ($row = $this->db->sql_fetchrow($result))
{
$new_hash = $this->passwords_manager->hash($row['user_password'], array($this->default_type));
// Increase number so we know that users were selected from the database
$affected_rows++;
$sql = 'UPDATE ' . USERS_TABLE . "
SET user_password = '" . $this->db->sql_escape($new_hash) . "'
WHERE user_id = " . (int) $row['user_id'];
$this->db->sql_query($sql);
}
$this->config->set('update_hashes_last_cron', time());
$this->update_lock->release();
// Stop cron for good once all hashes are converted
if ($affected_rows === 0)
{
$this->config->set('enable_update_hashes', '0');
}
}
}
Was ist der genaue Grund des erneuten Hashes über den gerade erst gebildeten Hashes vom phpBB2-Konverter?
Wo kann ich an meinem Web-System bzw. an der phpBB-Konfiguration ansetzen, damit die $CP\2y$10 beim Login als korrekte Hashes angenommen werden.
Ist ggf. der Fehler in der Login-Routine oder im Passwords-Manager zu suchen?
So, dass waren jetzt 2 Tage im phpBB3 spielen bis ich verstanden habe - was das Problem ist ... zumindest weiss ich jetzt - dass es "handlebar" sein wird; Ggf. wird einfach diese Funktion ausdokumentiert oder ggf. reicht auch einfach in der DB ein enable_update_hashes=0 zu setzen?

Ich habe in den Changes nicht wirklich etwas dazu gefunden, ausser
[PHPBB3-16293] - Update hashes cron produces invalid hashes while updating from 3.0
[PHPBB3-16534] - Passwords converted from phpBB2 can have invalid hash
Danke - dass Du bis hier her gelesen hast

Wenn jetzt noch Hinweise zu ähnliche Threads (hoffentlich mit Lösungsvorschläge) kommen - würde ich mich sehr freuen.
Herzliche Grüße
Harald
Testserver:
Version des Boards: 3.3.2
Datenbank-Server: MySQL(i) 5.0.67-community-log
PHP-Version: 7.3.26
Zend Engine: 3.3.26
Xdebug: 3.0.2