Page 1 of 1

[gelöst] Logindaten zerstört // old-style MD5 hash

Posted: Thu Mar 15, 2012 7:21 pm
by snafu
Hallo zusammen,

(Ich mußte das Forum schon Jahre nicht mehr benutzen, weil S9Y so snappy läuft, aber jetzt muss es doch mal sein :)

Blog betrieben mit Serendipity 1.5.5 und PHP 5.2.12-nmm2
Manche meiner User bekommen die Meldung beim Login:

"You can no longer login with an old-style MD5 hash to prevent MD5-Hostage abuse. Please ask the Administrator to set you a new password."

Ich habe dazu eine Lösung gefunden: "please check the row of the corresponding user. He should have the "hashtype" column set to "1"? If not, you can try to set it to 1 and then reset his password". Getestet, geht, aber dazu müsste ich alle ca. 200 betroffenen User-Einträge einzeln anfassen *und* deren Passwort neu setzen!

Meine Fragen:

- Gibt es einen automatisieren Weg, dieses Problem zu beheben?
- Warum sind manche (scheinbar die ältesten) User nicht betroffen?
- Was ist die Ursache für diesen Fehler?

Ganz herzlichen Dank,
snafu,

http://kassel-zeitung.de/

Re: Logindaten zerstört // old-style MD5 hash

Posted: Fri Mar 16, 2012 3:17 pm
by garvinhicking
Hi!

Vor rund 2 Jahren haben wir s9y umgestellt auf neue Loginhashes. Damit die User nicht aus dem System ausgesperrt sind, wurden weiterhin deren Cookies akzeptiert, im dem Glauben dass sich jemand irgendwann mal abmelden und dann neu anmelden wird.

Da die "Karenzzzeit" für diese User nun überschritten ist (diese haben sich nie neu eingemeldet bzw. sich einen neuen Cookie bauen lassen) musst Du nun als Admin hingehen und in der Benutzerverwaltung den Accounts ein neues PAsswort zuweisen. Damit können die sich dann temporär einloggen und dann ihr neues Passwort in den eigenen Einstellungen vergeben.
- Gibt es einen automatisieren Weg, dieses Problem zu beheben?
Nein, denn dafür müssten die Passwörter im Klartext vorliegen. Man könnte jedoch per PHP-Script jedem User automatisch ein neues Passwort zuweisen, über die serendipity_hash() function und entsprechende SQL UPDATE befehle für die serendipity_authors Datenbanktabelle:

Code: Select all

<?php
include 'serendipity_config.inc.php';
$passwort = "NeuesPasswort";
$benutzer = 'snafu';
$mail       = 'snafu@example.com';

serendipity_db_query("UPDATE {$serendipity['dbPrefix']}authors SET password = '" . serendipity_hash($passwort) . '" WHERE username = '" . $benutzer . "'");
mail($mail, 'Dein Passwort', 'Ist jetzt: ' . $passwort);
(Pseudocode).

Notfalls könntest Du auch in der serendipity_options Datenbanktabelle den Wert für das Attribut "hashkey" auf einen aktuellen Unix-Timestamp setzen, dann setzt Du die Karrenzzeit nochmal entsprechend höher. Dann kannst Du die User auch auffordern, mal ein neues Passwort zu setzen...


Viele Grüße,
Garvin

Re: Logindaten zerstört // old-style MD5 hash

Posted: Fri Mar 16, 2012 4:54 pm
by snafu
Hi Garvin!

Herzlichen Dank für die ausführliche Antwort. Jetzt weiss ich woran es liegt (und vermute keine Störung mehr): Die betreffenden User waren also ca. 2 Jahre nicht angemeldet, quasi Karteileichen. Ich denke, ich werde die betreffenden Accounts einfach löschen, und die User informieren.

Die Karrenzzeit nochmal zu erhöhen werde ich wohl nicht versuchen, dann tritt das selbe Problem einfach nur später auf.

An dieser Stelle nochmal einen persönlichen Dank für deine und aller Helfer Arbeit - unsere freie Zeitung läuft seit > 5 Jahren absolut einwandfrei dank S9Y!

Herzliche Grüße
Snafu