Moin,
Ja, aber da ist das Problem, wie erkenne ich einen "2. versuch"?
Da wiederhole ich mich ungern aber:
Immer wieder schön ist es auch, die Anzahl fehlgeschlagener Versuche _pro_Benutzernamen_ zu speichern
Alles was ich angesprochen habe gilt pro Benutzername, anders gibt das keinen Sinn.
Hm? verestehe ich nicht. Was ist daran so schlimm, wenn man das unterscheiden kann?
Naja, man könnte sonst das Brute Forcen um etwa den Faktor 3 beschleunigen: Kommt nach 1 Sekunde keine positive Antwort, muss davon ausgegangen werden, dass das Passwort falsch war, also nochmal probieren. Das erschlägt man dann mit lockfiles gleich mit. Im Nachhinein überlege ich mir grade, dass man die sowieso haben will, ansonsten kommt einer auf die Idee soviele gleichzeitige Einloggversuche zu starten, wie Server gleichzeitig verfügbar sind (soweit ich weiss standardmäßig etwa 150 beim Apache). Auf diese Weise könnte man glatt 150 verschiedene Passwörter pro 3 Sekunden (alle Zahlen natürlich je nach Konfiguration) ausprobieren. (Das würde der Admin aber sehr schnell bemerken, da der normale Serverbetrieb davon stark beeinträchtigt werden würde). Achja, die maximale Fehlversuchszahl würde das auch verhindern.
Das ist gut, eingegebenen Benutzernamen loggen. So weit ich weiß funktionieren die meisten Programme so, dass zu einem bestimmten Benutzernamen per brute-force Passwörter probiert werden. Dann häte man ja einträge mit immer demselben Passwort.
Alles andere wäre auch sinnfrei.
Und wie sollte man dann reagieren? Unterschiedlich ob es ein existierender Benutzername ist, oder nicht?
Blöde Idee[tm], da man so evt. an die Information ob ein bestimmter Benutzername existiert oder nicht kommen könnte. Die Reaktion auf Benutzername existiert nicht und Passwort für den Benutzernamen ist falsch muss exakt identisch sein. Daher werden die Fehlermeldungen üblicherweise als "Die Passwort/Benutzername-Kombination existiert nicht." (oder ähnlich) formuliert. Das liegt nicht etwa an der Faulheit der Programmierer.
Aber die idee mit sleep() ist wirklich gut, könnte man ja wirklich bei zu vielen vergeblichen Versuchen von einer IP oder mit einem Username weiter hochsetzen.
Das schrieb ich ja in meinem vorhergehenden Posting. Nach IP zu sperren ist übrigens keine so gute Idee, da das bei Proxies schonmal zu Problemen führen kann: die Wahrscheinlichkeit dass sich x Benutzer hinter der gleichen IP sitzen, und nahezu gleichzeitig einloggen wollen ist je nach System das geschützt werden soll so niedrig nicht. Etwa wenn in der Schule die Internetverbindung für den Rest der Stunde für persönliche Zwecke freigegeben wird und alle sich gleichzeitig bei GMX einloggen wollen.
--
Henryk Plötz
Grüße aus Berlin