login sperren

Pherseus

Erfahrenes Mitglied
Ich bin gerade dabei, dass login für mein script zu schreiben. Dabei möchte ich, dass nach drei falschen Eingaben, das Login für diesen User für eine bestimmte Zeit gesperrt wird.

Allerdings bin ich mir noch nicht so ganz sicher, wie ich es realisiere, dass das Login für den User gesperrt ist.

IP speichern, Session speicher oder Cookie speichern wird bei unerfahrene User zwar helfen, aber bei sochen brauch ich auch keine Deaktivierung weil die eh nicht versuchen werden ein Login zu knacken.

Gibt es da eine besser Lösung, ohne das man das Umgehen kann.
 
Also IP speichern wäre eine sinnvolle Methode! Der User kann sich dann zwar neu ins Internet einwählen aber egal. Damit wären aber zumindest die "unerfahrenen" geblockt!
Du könntest auch das komplette Script sperren. z.B über eine Datei in der drinsteht
PHP:
$gesperrt = 1 //oder 0
Und beim Scriptaufruf wird diese Variable dann überprüft!
Ich hab da zufällig grad ne File-Klasse geschrieben mit der du das alles machen könntest... ;-] (siehe Thema...)

greetz
daddz
 
daddz hat gesagt.:
Du könntest auch das komplette Script sperren. z.B über eine Datei in der drinsteht
PHP:
$gesperrt = 1 //oder 0
Na klar, wir sperren mal eben das Script für alle Nutzer, weil ein Nutzer sich dreimal nicht korrekt angemeldet hat.

@Pherseus: Eine Möglichkeit wäre, dass du der Nutzertabelle zwei neue Spalten hinzufügst. In der einen speicherst du die Anzahl der aufeinander folgenden fehlgeschlagenen Loginversuche je Nutzer ab. Ist die Zahl 3 erreicht, wird in der anderen Spalte der Zeitpunkt (beispielsweise in Form einens Timestamps) hinterlegt, der angibt, wann der dritte gescheiterte Loginversuch erfolgte. Bei den kommenden Loginversuchen des Nutzers prüfst du, ob ein Timestamp vorhanden ist und verweigerst ggf. den Login, solange die Zeit der Sperrung noch nicht abgelaufen ist. Versucht sich der Nutzer einzuloggen, nachdem die Sperrzeit verstrichen ist, setzt du die Anzahl fehlgeschlagener Loginversuche auf 0 zurück, löschst den Timestamp und das Spiel beginnt erneut.

Die Frage ist, ob eine solche Sperrung überhaupt notwendig ist. Um Brute-Force-Attacken abzuschwächen, würde es schon ausreichen, nach einem fehlerhaften Login die Scriptausführung um 5 Sekunden zu verzögern.

Sven
 
So hab ich das doch gemeint Natürlich nicht dauerhaft sperren! Wär ja idiotisch! Sollte halt nur ein Denkantoß sein!

greetz
daddz
 
Ganz einfach.... ABER DANN IST DER GEDAMTE ACCOUNT GESPERRT (so glaub ich, dass du das so willst)
Du legt eine neue spalte in deiner user-datenbank an (ich hoffe du benutzt eine DB) die da wo lautet: blocked.
da haust du dann ein timestamp mit "time()+60*5" rein, das sperrt den account dann in diesem beispiel für 5 Minuten.
wenn sich ein user einlockt, dann vergleichst du nicht nur den Benutzernamen, das passwort, sondern auch das "blocked" mit dem aktuellen timestamp.
=> ALSO: if($username==$datenbank["username"] && $password==$datenbank["password"] && $datenbank["blocked"]<=time())
 
Oh...ich denk die ganze Zeit das es um ein Admin-Login geht! :rolleyes: Liegt wahrscheinlich daran, das ich zur Zeit intensiv an meinem Admin-Script werkel! ;-]
Der Vorschlag von "deiner Oma" :p ist eingentlich ganz gut! ...den User hat auf bestimmte Zeit sperren!

greetz
daddz
 
Zurück