Loginsystem mit Versuchsbeschränkung

  • Heyho!
    Mein Ziel: Ich möchte es so basteln, dass nach drei fehlerhaften Eingaben das Form für 15Min ausgeblendet wird. Klar, gibt Effizienteres, aber für die Seite reichts erstmal und ich kann mir was besseres überlegen.
    Mein Problem: Bisher baut sich die gesamte Seite nicht auf, da

    Zitat von php.net

    Hinweis: Alle eingetroffenen Signale werden erst ausgeliefert, wenn die Ausführung fortgesetzt wird.

    Steht zwar nicht direkt bei sleep(), scheint aber auch dafür zu gelten.
    Womit kann ich das also ersetzen?


    Das bisherige Skript.

  • Du schreibst da gerade kein script für nen Webserver =)
    Sieht aus, als ob Du schon in anderen Richtungen was gemacht hast.


    1. Solange das PHP script nicht bis "unten" durch gerannt ist, passiert auf dem Bildschirm nix. (stimmt so nicht ganz anber muss erst mal reichen)
    2. Beim nächsten Seitenaufruf (user gab falsches PW) sind Deine Variablen (zB $i) weg. Du brauchst etwas anderes, was Dir die Werte Speichert -> zB $_SESSION['anzahl_versuche'] = ...
    3. Das while funktioniert nicht wie du denkst. Wie bei 1. beschrieben -> das script rennt alles durch und gibt dann erst die Webseite (Inhalt) aus.
    4. Vergiss sleep für dieses Vorhaben. sleep lässt dein script "schlafen". Also auch wieder keine Ausgabe auf dem Bildschrim solange das script nicht abgearbeitet wurde.


    Hier gehts um $_SESSION: http://www.php-kurs.com/session-anwenden.htm


    Und hier ein Bsp für ein einfaches LoginScrit: http://www.php-kurs.com/loesung-einlogg-script.htm


    =)

  • Das Skript ist nur der relevante Part und nicht das komplette Skript. Ein- und- Ausloggen klappt schon, ich will es nur schaffen, dass in diesem Bereich die Versuchsanzahl geprüft und bei zu häufigem falsch das Login geblockt wird.


    1. Das hab ich auch gemerkt :P
    2. Mit Session hab ich auch überlegt und inzwischen eingebaut.
    3. Wie bei 1. gesagt: Hab ich auch schon gemerkt ;). Was würdest du denn statt dessen vorschlagen? if?
    4. sleep hab ich schon verworfen (s. 1. u. 3.), soll ich da auch Session nehmen?


    Was ich jetzt noch brauche ist die zeitliche Beschränkung, bzw. eine andere gute Idee.
    Grundüberlegung:
    - Alle der Jugendgruppe kriegen den gleichen Nutzernamen + PW
    - D.h. ich kann nicht einfach eine Mail zum reaktivieren senden lassen -> müsste ja die IP sperren und an den Admin (mich) senden, ich müsste die aus der Gruppe fragen wer die IP hat, die haben keine Ahnung, wo man die herkriegt -> Blöde Idee 8)
    - Also muss ich einen anderen Schutz finden, der nur für den einen greift. Kann man eine IP temporär sperren? Oder hat wer eine bessere Idee?


    =)

  • 3. $_SESSION['fehlversuche']++;
    In der Session mitzählen lassen. Oder im Cookie. Aber ich denke Session ist einfacher, wenn Du Dich jetzt nicht noch um Cookies kümmern möchtest.


    Zur Zeitbegrenzung - schwierig. Also eigentlich nicht. Aber ich weiss ja jetzt nicht in wie weit Du mit PHP bist.
    Was mir auf Anhieb einfällt:
    - per javascript die Eingabefelder für eine bestimmte Zeit deaktivieren (kann man ja aber umgehen)
    - die Zeit in einer Session merken -> wenn Eingabe falsch dann $_SESSION['zeit_wenn_loginversuch_wieder_möglich'] = time()+180;


    Natürlich setzt Du dann eigene, kürzere namen :D
    Im script fragest Du dann ab:


    Weiss allerdings nicht, wo eine Zeitbegrenzung was bringt.


    Warum bekommen denn alle den gleichen Login?
    Für den Fall Du willst mehrere Nutzer abgleichen (name,PW) nimm einfach ein Array:



    Die IP vom user bekommst Du über: $IP = getenv("REMOTE_ADDR");

  • Ich schätze du suchst grundlegend in etwa so etwas hier:



    Falls nicht kläre mich bitte auf, ich habe jetzt nicht alles gelesen was ihr geschrieben habt :love:

  • So ungefähr, aber wenn das einer sperrt dann kann sich ja keiner mehr einloggen 8|


    Ich will nur ein Nutzer + PW haben, weil das ein Bereich für den gesamten Pfadfinderstamm ist, für den ich die Seite schreib. Da braucht keiner irgendwas spezifisches, sondern jeder hat die gleichen Rechte und kann das Gleiche einsehen. Darum gleicher Nutzer + PW, weil ich dann weniger Arbeit habe :P


    Aus diesem Grund muss ich das irgendwie anders regeln, also per IP-Sperre oder Cookie, damit es Spezifisch greift. Zur Not kann man es auch so machen, dass es dauerhaft gesperrt wird und sich die Leute an mich wenden müssen, um wieder entsperrt zu werden 8) . Temporär wär mir aber lieber.


    Also, ungefähr sowas wie Basiis, nur keine generelle, sondern eine spezifische Sperre.
    Eine Idee von mir war, die IP auszulesen und mit der Wieder-Freigabe-Zeit zusammen in ne MySQL (SQLite)- Table schreiben zu lassen. Diese wird dann jedesmal geprüft, wenn einer den Login aufruft und IPs, wo die gespeicherte Zeit erreicht wurde, werden wieder gelöscht.
    Ich denke mal, dass das möglich wäre, jetzt stellt sich mir allerdings die Frage: WIE? ?(

  • Ich glaube du verstehst das Prinzip falsch, wenn jemand sich 3 mal falsch anmeldet und somit die Session gesetzt wird kann sich nur dieser Benutzer nicht mehr einloggen.


    Sessions laufen nicht benutzerübergreifend sondern sind eine private Angelegenheit zwischen Webserver und dem spezifischen Surfer.


    Wenn du dich hier im Forum anmeldest wird dir auch eine Session zugewiesen, das heißt aber nicht das jeder der die Seite benutzt angemeldet ist und in deinem Namen schreibt.


    Des Weiteren bleibt die Frage wofür du die Anmeldeversuche beschränken möchtest:


    1. Schutz vor Bots: Ein (guter) Bot wird sowieso jeden Versuch mit einer neuen IP beginnen, von daher nicht effektiv.


    2. Schutz vor Möchtegern-Script-Kiddies: Eine Kombination aus Benutzername und Passwort mit einer Länge von jeweils 5 Zeichen, nicht bestehend aus Wörtern und eine Kombination aus Zahlen, Buchstaben und anderen Zeichen würde solch eine Person niemals durch ausprobieren herausfinden, außerdem kann ein Mensch ein Formular gar nicht so schnell ausfüllen und absenden das es zu Problemen bei der Serverauslastung kommen würde.
    Selbst ein Bot würde für solch eine Kombination übrigens mehrere Wochen/Monate brauchen.

  • Ich dachte, die Session läuft übergreifend und Cookies wären spezifisch?
    Wenn die Session auch spezifisch ist, wäre sowas wie oben ja ausreichend.


    Nene, das soll nur ein Schutz vor zB kleinen Geschwistern sein, dass die sich nicht mal denken "Ui, großer Bruder nich da, spielen wir doch mal WebsiteAdmin!" oÄ.
    Das durch fehlerhafte Eingabe der Login zeitweise gesperrt wird und der Bruder so den Möchtegernhacker wieder verteiben kann.


    Man glaubt gar nicht, wie oft sowas schon erzählt wurde ;)

  • Sessions werden vom Server verwaltet und sind für den Benutzer (kaum) manipulierbar (das setzt sehr viel Wissen voraus).


    Cookies werden vom Browser verwaltet und können somit vom Nutzer eingesehen und verändert werden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!