MWojt Geschrieben 31. März 2014 Share Geschrieben 31. März 2014 Hi Leute, ich habe mal wieder ein Problem beim Schreiben meiner Seite. Ich habe das untenstehende Script in PHP geschrieben und verstehe einfach nicht, was daran falsch ist. Dieses Script soll verhindern, dass man zu schnell mit dem Server agiert. <?php function session () { session_start(); if (!isset ($_SESSION['stop'])) { $_SESSION['stop'] = time(); return true; } $time = time() + 2; $stop = $_SESSION['stop']; if ($stop < $time) { echo("<script type='text/javascript'> alert('Warte!'); </script>"); return false; } else { $_SESSION['stop'] = time(); return true; } } ?> Dieses Script gibt nicht nur dann false zurück, wenn man vor einer gewissen Zeit noch mit dem Server agiert hat, sondern immer. Sieht von euch vlt jmd den Fehler? Danke im Vorraus, MWojt Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gelöscht_kiwi Geschrieben 31. März 2014 Share Geschrieben 31. März 2014 (bearbeitet) Heyho, da hast du einen kleinen Logikfehler drin. Du musst die Stoppzeit (in der Session) time()+2 setzen, und die aktuelle Zeit ($time) auf time(). Sonst wird die Condition $stop < $time _immer_ true. $stop wird _immer_ in der Vergangenheit liegen und somit _immer_ kleiner sein als die aktuelle Zeit+2 <?php function session () { session_start(); if (!isset ($_SESSION['stop'])) { $_SESSION['stop'] = time() + 2; return true; } $time = time(); $stop = $_SESSION['stop']; if ($stop < $time) { echo("<script type='text/javascript'> alert('Warte!'); </script>"); return false; } else { $_SESSION['stop'] = time() + 2; return true; } } ?> Eine kleinere Implementierung wäre übrigens <?php function session() { session_start(); if(!isset($_SESSION['stop']) || $_SESSION['stop'] < time()) { $_SESSION['stop'] = time()+2; return true; } else { echo("<script type='text/javascript'>alert('Warte!');</script>"); return false; } } ?> (untested btw) LG bearbeitet 31. März 2014 von kiwi Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MWojt Geschrieben 31. März 2014 Autor Share Geschrieben 31. März 2014 Oh, danke, es funktioniert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gelöscht_kiwi Geschrieben 31. März 2014 Share Geschrieben 31. März 2014 Heyho , hab ich vergessen zu schreiben: Sessionbasierendes Ratelimiting schützt jetzt nicht wirklich vor Angreifern, sondern nur vor F5-Drückern, da das Wiederaufbauen einer bereits vorhandenen Session von dem Sessioncookie abhängig ist, den der Client mitsenden muss. Wenn er das nicht tut, hat er die ganze Zeit freie Bahn. Tendenziell gehst du damit also eher normalen Usern auf den Sack, lässt Angreifer aber trotzdem weiter passieren. LG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MWojt Geschrieben 31. März 2014 Autor Share Geschrieben 31. März 2014 Heyho , hab ich vergessen zu schreiben: Sessionbasierendes Ratelimiting schützt jetzt nicht wirklich vor Angreifern, sondern nur vor F5-Drückern, da das Wiederaufbauen einer bereits vorhandenen Session von dem Sessioncookie abhängig ist, den der Client mitsenden muss. Wenn er das nicht tut, hat er die ganze Zeit freie Bahn. Tendenziell gehst du damit also eher normalen Usern auf den Sack, lässt Angreifer aber trotzdem weiter passieren. LG Was schlägst du vor, um gegen Angreifer vorzugehen? (Ich dachte mir schon, dass diese Methode nichts bringt, vorher hatte ich das gleiche mit Cookies, was noch einfacher zu umgehen war) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Beefsteakwerfer Geschrieben 31. März 2014 Share Geschrieben 31. März 2014 Eine Firewall wäre die beste Lösung. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MWojt Geschrieben 31. März 2014 Autor Share Geschrieben 31. März 2014 Wie könnte man eine Firewall dazu nutzen, Angriffe abzuwenden, wenn man sonst den Zugriff auf den Server gewähren möchte? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Beefsteakwerfer Geschrieben 31. März 2014 Share Geschrieben 31. März 2014 Du könntest die Paketanzahl pro IP begrenzen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MWojt Geschrieben 31. März 2014 Autor Share Geschrieben 31. März 2014 Würden die Hacker dann nicht dafür sorgen, dass sich ihre IP ständig ändert? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Beefsteakwerfer Geschrieben 31. März 2014 Share Geschrieben 31. März 2014 Man kann selbst bei leistungsschwachen Servern bei effektiven Angriffen bis zu 500 IPs pro Sekunde erfolgreich filtern. Um den Server dann zu fluten mit Datenpaketen müsste also ein entsprechend großes Botnetz her - und ja, dagegen kann man ab einer bestimmten Größe nichts mehr machen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden