Hallo Christian!
Du kannst aber die IP jedes gescheiterten Versuchs mitloggen und bei drei Fehlerversuchen innerhalb einer Stunde von dieser IP dann einen 403er senden. (und Du brauchst einen Cleanup-Code, dass er alle mitgeloggten IPs, die älter als eine Stunde sind, wieder löscht)
Wäre es nicht sicherer die Fehl-Versuche pro Username zu loggen, also unabhängig von der IP? Denn mit der IP denke ich könnte man mit Proxies auch in einem Brute-Force Script was machen, aber Benutzernamen müssen auch für Bruteforce nunmal gleich sein.
Ich speichere username|timestamp
Das speicher ich bei jedem Fehleversuch, und lösche jedesmal Einträge älter als 1 Stunde, und wenn ein Username mehr als 3 mal vorkommt wird dieser gesperrt, d.h. diese File müßte ich bei _jedem_ Request abfragen, oder? Kommt mir etwas umständlich vor!
Ich könnte gesperrte Usernamen auch auf eine Art Blacklist schreiben, halt nur alle Gesperrten User auslesen, dann kann ich die übrigen Prüfungen bei sowieso gescheiterten Login-Versuchen machen, da ist das ja egal. Dann müßte ich nur Einträge von der Blacklist wieder löschen. Vielleicht mache ich es auch besser über Dateien, ich erstele ein Verzeichnis blacklist/, da kommen dann alle gesperrten Usernamen als leere Datei rein mit Namen gesperrter_user-timestamp.
Das würde ich dann mit den Verzeichnisfunktionen parsen... aber vermutlich mache ich mir mal wieder zu viele Gedanken um performance, und ich weiß noch nichtmal ob das so schneller ist. Ich muß mal ein bisschen testen, 4 Varianten:
1. Datenbank-Tabelle
2. Datei parsen
3. Verzeichnis auslesen
4. Array includen
Grüße
Andreas