Wie man Login-Formulare lieber nicht gestaltet

Heute begegnete ich auf der Arbeit einem Support-Fall, dessen Erkenntnisse sich alle Web-Entwickler da draussen zu Herzen nehmen sollten: Eine Mitarbeiter konnte sich nicht mehr in eine intern programmierte Web-Applikation einloggen.

Jedesmal, wenn sie ihre Zugangsdaten in das Login-Formular eingegeben hatte und den „Login“-Knopf drückte, kehrte sie umgehend auf dieselbe Seite zurück, das Formular war aber wieder leer.

Als ich beigezogen wurde, entdeckte ich zwei vom Entwickler verschuldete Probleme:

Benutzernamen mit Gross-/Kleinschreibung. Offenbar ist die Authentifizierungsroutine der Applikation so programmiert, dass nicht nur das Passwort case-sensitive geprüft wird (sehr gut, macht Brute-Force-Attacken komplizierter), sondern auch der Benutzername (schlecht). Somit war „benutzer“ nicht identisch mit „Benutzer“ oder „BeNuTzEr“. Dabei sollte man den Endbenutzern erlauben, irgendwelche Schreibweisen des Benutzernamens zu verwenden.

Keine Fehlermeldung. Dem Benutzer wurde nach der Rückkehr zum Login-Formular nicht mitgeteilt, weshalb der Zugang zum geschützten Bereich verweigert wurde. Es ist für den Benutzer (wie auch für den IT-Supporter) sehr hilfreich, wenn die Web-Applikation möglichst genau sagt, wo das Problem liegt — und am besten die Fehlermeldung klar vom restlichen Seiteninhalt abhebt (bspw. mit einem roten Rahmen und einem hellroten Hintergrund). So könnte man ausgeben „Benutzer nicht gefunden“ oder „Passwort falsch“, was helfen würde, die Fehlerursache rasch und effizient einzuschränken. Selbstverständlich kann man argumentieren, dass die Applikation nur auf ein nicht näher spezifiziertes Login-Problem hinweisen sollte, um potentiellen Hackern nicht zu viele Informationen preiszugeben. Ich bin aber der Meinung, dass die Benutzbarkeit der Applikation höher gewichtet werden sollte als potentielle Angriffsvektoren. Gowalla ist ein gutes Beispiel dafür: Bei Login-Problemen erfährt der Anwender, ob der Benutzername überhaupt existiert oder ob das Passwort falsch angegeben wurde.

Wer diese zwei Ratschläge befolgt, wird seinen Kunden eine Menge schlaflose Nächte ersparen.