kostenloser Webspace werbefrei: lima-city


IP umleitung nach 200Aufrufe

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    webcity

    Kostenloser Webspace von webcity

    webcity hat kostenlosen Webspace.

    Um dauerhafte aufrufe zu vermeiden & die server zu entlassten möchte ich gerne nach 150 Aufrufen einer IP bzw nutzer diesen auf eine CAPTCHA Webseite umleiten auf dieser bestätigt das er es nicht auf der F5 tippelt.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ganz einfach:

    mach eine session auf und lass eine session-variable hochzählen...

    beim 149. mal killst du die session nach auslieferung und setzt den anwender wieder auf den anfang zurück, wo er das captcha ausfüllen muss...


    hoff ich konnte helfen,

    gruß,

    sebulon
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    webcity schrieb:
    … nach 150 Aufrufen einer IP bzw nutzer diesen auf eine CAPTCHA Webseite umleiten
    Vergiss dabei nicht, dass wenn 150 Leute hinter einer NAT sitzen und alle die Seite nur 1x aufrufen das Captcha erscheinen würde…

    Ansonsten: speicher in einer DB die IP + einen Counter + einen Zeitstempel. Bei jedem Seitenaufruf erhöhst du den Counter und setzt den Zeitstempel auf die aktuelle Zeit. Wenn counter > 150 → Captcha, danach den Counter wieder auf 0. Ist der Eintrag (bzw das letzte Update) schon älter als z.b. 10 Minuten (erkennbar am Zeitstempel) löschst du die Zeile wieder aus der Tabelle.

    sebulon schrieb:
    mach eine session auf und lass eine session-variable hochzählen...
    Wenn du das so machst hast du den Nachteil, dass wenn der "Angreifer" Cookies deaktiviert er jedes Mal eine neue Session bekommt und somit beliebig oft die Seite aufrufen kann.

    Beitrag zuletzt geändert: 23.9.2012 15:18:53 von hackyourlife
  5. Autor dieses Themas

    webcity

    Kostenloser Webspace von webcity

    webcity hat kostenlosen Webspace.

    will ohne db arbeiten ist es nicht möglich die ip nach 150aufrufen in eine .txt. datei zu schreiben und durch richte eingabe des capa. wieder zu löschen?
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    webcity schrieb:
    will ohne db arbeiten
    Dadurch wird es nur unnötig komplizierter…

    webcity schrieb:
    ist es nicht möglich die ip nach 150aufrufen in eine .txt. datei zu schreiben
    Und woher willst du wissen wie oft "die IP" deine Seite schon aufgerufen hat wenn du sie nicht sofort mitsamt einem Counter speicherst?

    Beitrag zuletzt geändert: 23.9.2012 15:40:04 von hackyourlife
  7. g****e

    Du könntest einen TMP Ordner halten, wo du Datein entsprechend IP Adressen anlegst (also die Datei dann zb 123.123.123.123 heißt). Dann das als Flatfilesystem aufbauen, kann man, ist aber nicht sooo dolle. Man kann auch SQLite benutzen, das ist eine Datenbank in einer Datei, wenn mans haben will. Oder du arbeitest halt mit Sessions.
    Aber an sich klingt das, was du da anfragst nach dem Flatfilesystem, wo du einfach mit file_exists prüfst, ob ein Log vorhanden ist, und bei korrektem Captcha einfach die Datei wieder löscht mittels Unlink, im Inhalt speicherst du die Anzahl der Versuche, am besten noch mit Timestamp des letzten Aufrufes (denk hier an explode, implode) und fertig.

    Liebe Grüße
  8. hackyourlife schrieb:

    sebulon schrieb:
    mach eine session auf und lass eine session-variable hochzählen...
    Wenn du das so machst hast du den Nachteil, dass wenn der "Angreifer" Cookies deaktiviert er jedes Mal eine neue Session bekommt und somit beliebig oft die Seite aufrufen kann.



    nein, er muss jedes mal das captcha bedienen, wenn er keine cookies hat^^ wer anonym ist, muss auch mehr arbeit in Kauf nehmen^^
  9. Hallo :wave:

    sebulon schrieb:
    hackyourlife schrieb:

    sebulon schrieb:
    mach eine session auf und lass eine session-variable hochzählen...
    Wenn du das so machst hast du den Nachteil, dass wenn der "Angreifer" Cookies deaktiviert er jedes Mal eine neue Session bekommt und somit beliebig oft die Seite aufrufen kann.



    nein, er muss jedes mal das captcha bedienen, wenn er keine cookies hat^^ wer anonym ist, muss auch mehr arbeit in Kauf nehmen^^


    Ja genau so ist das, wenn man keine Cookies erlaubt. Da verhalten sich viele Webseiten auf einmal ganz komisch, die von tunngle z.B. lädt andauernd neu. :biggrin:

    Ich würde das ganze einfach am Webserver einstellen, zumindest bin ich mir ziemlich sicher, dass es so eine Funktion auf jedem Webserver gibt mit der nach x Aufrufen in der Minute ein 503 Error ausgeworfen wird. Wenn du irgendwo Webspace hast kannst du das wahrscheinlich nicht am Webserver einstellen, dann kann es dir aber eigentlich auch egal sein. :biggrin:

    mfg :wave:
  10. sinnvoller wäre ein timestamp auf die letzte aktion von der session und schauen, ob zwischen dem timestamp und dem aktuellen min 3 ekunden vergangen sind... damit kann man flooden auch abfangen... allerdings kann man das dann mit no cookies abfangen, außer man haut ne 3 sekunden zeitschleife rein, wenn keine session vorliegt...
  11. sebulon schrieb:
    nein, er muss jedes mal das captcha bedienen, wenn er keine cookies hat^^ wer anonym ist, muss auch mehr arbeit in Kauf nehmen^^

    Soll heißen wenn ich das erste Mal auf die Seite komme darf ich gleich ein Captcha eingeben?
    Du glaubst ja nicht wie schnell ich die Seite wieder geschlossen hätte. :biggrin:
    Außer ich weiß der Inhalt ist er wert oder das Captcha ist extrem leicht&schnell einzugeben.

    Achja, SessionIDs kann man auch per GET-Parameter mitgeben um das Keine-Cookies-erlaubt-Problem zu vermeiden, jedoch bringt das gegen einen "Angreifer" natürlich nichts.
  12. philippkern schrieb:

    Soll heißen wenn ich das erste Mal auf die Seite komme darf ich gleich ein Captcha eingeben?
    Du glaubst ja nicht wie schnell ich die Seite wieder geschlossen hätte. :biggrin:
    Außer ich weiß der Inhalt ist er wert oder das Captcha ist extrem leicht&schnell einzugeben.

    Achja, SessionIDs kann man auch per GET-Parameter mitgeben um das Keine-Cookies-erlaubt-Problem zu vermeiden, jedoch bringt das gegen einen "Angreifer" natürlich nichts.


    man kann ja immer noch eine landing page schreiben, auf der kein captcha erforderlich ist und über die landing page den eintritt captchafrei machen, nur wer F5 auf der seite wie ein irrer drückt darf captchan^^

    und eine session-ID gibst du nicht mit einem get weiter... zumindest nicht wenn du deine software selbst schreibst... steinzeit-CMS machen das vielleicht noch so... oder foren, aber moderne CMS packen dir keine Session-IDs in die get zeile...

    vielleicht solltest du dich mal etwas zu


    $_GET
    $_POST
    $_REQUEST
    $_SESSION informieren, bevor du sowas vom stapel lässt...

    jetzt frag ich mich, wie $_SESSION auf $_GET oder $_REQUEST zugreifen soll... :shaft:

    ich denke der TE will selbst scripten und nicht fertige Software von 1995 verwenden, wo passwörter noch klartext über GET übermittelt wurden... (ja ich weiß, märchenstunde bei Onkel sebulon...:cookie:)

    Beitrag zuletzt geändert: 24.9.2012 0:31:18 von sebulon
  13. sebulon schrieb:
    man kann ja immer noch eine landing page schreiben, auf der kein captcha erforderlich ist und über die landing page den eintritt captchafrei machen, nur wer F5 auf der seite wie ein irrer drückt darf captchan^^

    Ob es nun eine Landing Page oder Sonstwas Page ist, ist doch egal. Es geht ja darum den mehrfachen Aufruf von egal welcher Seite zu verhindern. Mit dem Vorschlag stehen wir wieder am Anfang.


    sebulon schrieb:
    und eine session-ID gibst du nicht mit einem get weiter... zumindest nicht wenn du deine software selbst schreibst... steinzeit-CMS machen das vielleicht noch so... oder foren, aber moderne CMS packen dir keine Session-IDs in die get zeile...

    Ich habe ja auch nicht gesagt dass es eine ideale Lösung wäre, jedoch wenn keine Cookies erlaubt sind wird dir wohl nichts anderes übrig bleiben ...

    sebulon schrieb:
    vielleicht solltest du dich mal etwas zu

    $_GET
    $_POST
    $_REQUEST
    $_SESSION informieren, bevor du sowas vom stapel lässt...

    jetzt frag ich mich, wie $_SESSION auf $_GET oder $_REQUEST zugreifen soll... :shaft:

    Gehts noch?
    Bitte informiere dich selbst erst mal ...
    http://php.net/manual/en/session.idpassing.php
  14. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    So, dann mal ggamees Ansatz ausprogrammiert:
    <?php
    
    $ip = $_SERVER['REMOTE_ADDR'];
    $ip = str_replace(':', '_', $ip); // for IPv6 addresses
    $filename = "ip/$ip";
    
    $data = new stdClass();
    $data->counter = 0;
    $data->timestamp = date('U');
    
    if(file_exists($filename))
    	$data = json_decode(file_get_contents($filename));
    
    $now = date('U');
    $diff = $now - $data->timestamp;
    if($diff > 20) // reset after 20 sec of inactivity
    	$data->counter = 0;
    
    $data->counter++;
    $data->timestamp = $now;
    
    if($data->counter > 2) { // captcha after 2 page reloads
    	echo('captcha!');
    	exit();
    }
    file_put_contents($filename, json_encode($data));
    
    ?>Das ist die wichtige Seite
    Die Dateien werden in einen Ordner namens "ip" gespeichert… wie du dort die "veralteten" und nicht mehr benötigten Datensätze löschst darfst du dir selber ausdenken.

    Nach dem erfolgreichen Captcha musst du nur noch die entsprechende Datei mittels
    unlink('ip/' . str_replace(':', '_', $_SERVER['REMOTE_ADDR']));
    entfernen.

    Beitrag zuletzt geändert: 24.9.2012 11:44:44 von hackyourlife
  15. a*****g

    Ich weiß ja nicht ob du es inzwischen erledigt hast aber..

    Speichert der Server nicht normalerweise die Erstellungs-/Änderungszeit jeder Datei?

    Anhand dieser Angabe ließen sich veraltete Dateien ja durchaus leicht erkennen und löschen wenn die Datei "reif" zum löschen ist.

    Ich glaube dashier könnte dabei recht hilfreich sein..

    http://de2.php.net/manual/de/function.filemtime.php
  16. Sinnvoller wäre vielleicht in eine DB oder in eine .txt Datei die Systemdaten einzutragen und dann abzufragen bzw. zu zählen.
  17. Hallo :wave:

    s27 schrieb:
    Sinnvoller wäre vielleicht in eine DB oder in eine .txt Datei die Systemdaten einzutragen und dann abzufragen bzw. zu zählen.


    Das wäre sogar die einzig sinnvolle Möglichkeit - auf IP - Basis. Es macht aber überhaupt keinen Sinn das mit einer Datenbank oder Textdatei zu realisieren, wenn man dafür lediglich 2 Zeilen in die Webserverkonfiguration einfügen müsste.

    Pauschal würde ich mal vermuten, dass lima-city mod_evasive o.ä. im Betrieb hat, sodass sich der Webspacebenutzer darüber überhaupt keine Sorgen machen muss. Du kannst aber auch einfach die Cloud-Funktion von Cloudflare verwenden, dann hat sich das Thema, unabhängig von der Webserver-Konfiguration, erledigt.

    mfg :wave:
  18. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!