MWojt Posted March 31, 2014 Share Posted March 31, 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 to comment Share on other sites More sharing options...
Gelöscht_kiwi Posted March 31, 2014 Share Posted March 31, 2014 (edited) 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 Edited March 31, 2014 by kiwi Link to comment Share on other sites More sharing options...
MWojt Posted March 31, 2014 Author Share Posted March 31, 2014 Oh, danke, es funktioniert. Link to comment Share on other sites More sharing options...
Gelöscht_kiwi Posted March 31, 2014 Share Posted March 31, 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 to comment Share on other sites More sharing options...
MWojt Posted March 31, 2014 Author Share Posted March 31, 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 to comment Share on other sites More sharing options...
Beefsteakwerfer Posted March 31, 2014 Share Posted March 31, 2014 Eine Firewall wäre die beste Lösung. Link to comment Share on other sites More sharing options...
MWojt Posted March 31, 2014 Author Share Posted March 31, 2014 Wie könnte man eine Firewall dazu nutzen, Angriffe abzuwenden, wenn man sonst den Zugriff auf den Server gewähren möchte? Link to comment Share on other sites More sharing options...
Beefsteakwerfer Posted March 31, 2014 Share Posted March 31, 2014 Du könntest die Paketanzahl pro IP begrenzen. Link to comment Share on other sites More sharing options...
MWojt Posted March 31, 2014 Author Share Posted March 31, 2014 Würden die Hacker dann nicht dafür sorgen, dass sich ihre IP ständig ändert? Link to comment Share on other sites More sharing options...
Beefsteakwerfer Posted March 31, 2014 Share Posted March 31, 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 to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now