Ankündigung

Einklappen
Keine Ankündigung bisher.

IP Sperre auf Zeit

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • IP Sperre auf Zeit

    Ich würde gerne für ein Login-Verfahren eine IP-Sperre nach 3 Fehlversuchen machen. Dass nach 3 Fehlversuchen etwas passiert hab ich schon. Nur leider verstehen ich nicht wie ich es machen soll, dass er eine IP-Sperre macht die für beispielsweise 15 Minuten anhält und dann automatisch aufgelöst wird.
    Ich hab schon rumgespielt, finde aber keine richtige Lösung.
    Habt ihr irgendwelche Ideen, Codeschnipsel etc. um mein Problem zu Lösen?
    Hier mein bisheriger Code-Versuch:

    Die Funktion:
    PHP-Code:
                function ReloadSperre()
    {
        
    // Dauer der Sperre in Sekunden
        
    $sperrZeit 15// 3600 = 1 Stunde
        
    $dateiname "reload.txt";
        
    // Zeit bis Sperre abgelaufen
        
    $reloadZeit 0;
        
    // IP-Adresse
        
    $ip $_SERVER['REMOTE_ADDR'];
        
    // aktuelle Zeit
        
    $zeit time();
        
    $datei file($dateiname);
        
    // Datei durchlaufen und auf Sperren prüfen
        
    for($i 0$i sizeof($datei); $i++)
        {
            
    $eintrag explode("|"$datei[$i]);
            
    // Sperre aktiv?
            
    if($eintrag[0] > $zeit $sperrZeit)
            {
                
    // gleiche IP?
                
    if(trim($eintrag[1]) == $ip)
                {
                    
    // Restdauer der Sperre berechnen
                    
    $reloadZeit $sperrZeit - ($zeit $eintrag[0]);
                }
                
    // Zeile wieder dem Dateiinhalt hinzufügen
                
    $neuerInhalt .= $datei[$i];
            }        
        }
        
    // Keine Sperre => neuen Eintrag erzeugen
        
    if($reloadZeit == 0)
            
    $neuerInhalt .= $zeit."|".$ip."\n";
        
    // Daten in Datei speichern
        
    $handle fopen($dateiname"w");
        
    fwrite($handle$neuerInhalt);
        
    fclose($handle);
        
    $handle2 fopen($datei"w");
        
    fwrite($handle2$startwert);
        
    fclose($handle2);
        
    // Restzeit zurückgeben
        
    return $reloadZeit;

    Der eigentliche Inhalt:
    PHP-Code:
            $reload ReloadSperre();
            if(
    $reload 0) {
                echo 
    "Du musst noch ".sprintf("%02d:%02d:%02d",
                    
    $reload 60 60, ($reload 60) % 60$reload 60)." warten, bis du dich erneut einloggen kannst.";
            } else { 
    Dankeee!


  • #2
    Zitat von phphtmlcss Beitrag anzeigen
    Ich würde gerne für ein Login-Verfahren eine IP-Sperre nach 3 Fehlversuchen

    Du hast die Frage mehrfach unter untersch. Nicks in verschiedenen Foren gestellt und auch Antworten bekommen. Verträgst Du grad die Hitze nicht oder was soll das?

    http://phpforum.de/forum/showthread.php?t=279835
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Wieso noch einer?

      http://www.php.de/php-einsteiger/109...tml#post804667

      Dass nach 3 Fehlversuchen etwas passiert hab ich schon.
      Achso...

      Nur leider verstehen ich nicht wie ich es machen soll, dass er eine IP-Sperre macht die für beispielsweise 15 Minuten anhält und dann automatisch aufgelöst wird.
      Zeitstempel setzen und den bei jedem relevanten Request prüfen.

      LG
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        ok werd das mal machen. Danke.

        Kommentar


        • #5
          Mithilfe einer Datenbank würde aus deinem (gefühlt) 200-Zeiler ein ~5-Zeiler
          Zitat von nikosch
          Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

          Kommentar


          • #6
            Ja ich weiß, hab nur leider keine DB zur Hand und musste deshalb als kurze Übergangslösung auf txt zurückgreifen
            Letztendlich werde ich selbstverständlich eine DB verwenden..

            Kommentar


            • #7
              Ich möchte fast wetten daß du eine DB zur Hand hast, denn die wird mit PHP von Hause aus mitgeliefert: SQLite

              Wenn du dann noch PDO benutzt, kannst du problemlos auf z.B. MySQL umsatteln wenn es beliebt.
              PHP-Klassen auf github

              Kommentar

              Lädt...
              X