Kommentar flood schutz?

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

  • Kommentar flood schutz?

    Hallo,
    (als erstes: habe die Suchfunktion benutzt und konnte keine verwertbaren Informationen finden)
    ich habe ein News-Script inkl. Kommentarfunktion geschrieben. Jetzt möchte ich gerne die Kommentarfunktion vor Flooding/Spaming schützten, kann mir da einer weiter helfen (bitte ausführlich)? Am besten wäre eine leichte und effektive Lösung (Habe keine Kenntnisse von Sessions usw...).

    Hier noch das PHP Programm, was die Daten in die Datenbank schreibt:
    PHP-Code:
    <?php
    @include("admin/dbconnect.php");
    $text nl2br($text);
    mysql_query("INSERT INTO test_comment (news_id, datum, name, email, text) VALUES ('$news_id', NOW(),  '$name', '$email', '$text')");

    echo 
    "Name: ";
    echo 
    $name;
    echo 
    "<br>Email: ";
    echo 
    $email;
    echo 
    "<br>Text: ";
    echo 
    $text;
    echo 
    "</p>";

    ?>

  • #2
    such nach ip sperre

    Kommentar


    • #3
      was is hier dran jetzt falsch?

      PHP-Code:
      <?php
      @include("admin/dbconnect.php");
      $text nl2br($text);
      // variablen bestimmung
      $ip $HTTP_SERVER_VARS["REMOTE_ADDR"];
      $datum date("d.m.Y");
      $zeit date("H:i");

      //überprüfung der IP Sperre
      $ipcheck "SELECT zeit FROM nkf_gbook WHERE ip = "'.$ip.'" AND zeit <"'.time()-120.'"LIMIT 0,1";
      $ipbantime =120;           //banzeit der IP in Sekunden
      $ipbanzeit $zeit+$ipbantime;     // aktuelle Uhrzeit + 120 sekunden
      $ipbancheck $ipcheck+$ipbantime;  // Uhrzeit des Posts + 120 sekunden
      if ($ipbanzeit<$ipbancheck)
      {


      mysql_query("INSERT INTO test_comment (news_id, datum, name, email, text, zeit, ip_adresse) VALUES ('$news_id', NOW(),  '$name', '$email', '$text', '$zeit', '$ip')");

      echo 
      "Name: ";
      echo 
      $name;
      echo 
      "<br>Email: ";
      echo 
      $email;
      echo 
      "<br>Text: ";
      echo 
      $text;
      echo 
      "</p>";

      //verbindung schliessen
      mysql_close();
      }
      else
      {
          echo 
      "Du kannst nur alle 2 Minuten ein Kommentar abschicken.";
      }

      ?>

      Kommentar


      • #4
        Nur überflogen.. jedoch gib mal...

        PHP-Code:
        echo $ipbancheck
        aus.. fällt dir was auf? Wieso den Select Befehl nicht auch ausführen?
        _____________
        Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
        [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

        Kommentar


        • #5
          RTFM: http://de3.php.net/types.string

          Kommentar


          • #6
            @all bisher

            ehrlich Leute,

            so unqualitfizierte, nichtsbringende Antworten habe ich selten gelesen.

            Dann haltet euch einfach raus.


            Also manuel, IMHO:

            eine IP-Prüfung alleine ist Dreck, da zB AOL-User innerhalb einer Sitzung bis zu 32 verschiedene Proxy-IPs
            haben können. Wer diese Erfahrung nicht
            gemacht hat, wie ein AOL-User die F5-Taste grdrückt hält und jedesmal
            ein Request unter einer anderen IP erzeugt wurde, weiß es halt nicht.
            Und leider gibt es davon mehr als genug.

            Session ist schon nicht schlecht, aber nur in Verbingung mit zB einer Challenge-ID.

            Starte eine Session, protokolliere die Aktivität, stell einen overall-Session -Timeout von ca. 30 min. ein.
            (garbage-collection probabylity auf 100% etc.)

            Generiere eine TAN-artige Challenge ID, von der du sicher stellst, daß diese systemweit einmailig und nicht durch brute-force zu knacken ist.

            Eine weitere Möglichkeit ist, mit den PHP-Funktionen alphanumerische Grafikdateien zur Erzeugen,
            die vom User in ein Textfeld bestätigt werden müssen.

            Wenn du Apache und wirklich böswillige User hast, kann ich Dir weiterhin wärmstens das Modul
            mod_throttle empfehlen. Damit kannst du sehr restriktiv üble Clients von deinen Skripten fernhalten.



            nice night
            Quickborner

            Kommentar


            • #7
              @quickborner :
              deine loesung ( nur eben ueberflogen) scheint brauchbar zu sein,
              nur halte ich sie fuer ein kommentarskript etwas uebertrieben ...

              ich wuerde (auch wenn es knackbar ist ) es so anstellen :

              session
              nach dem schreiben eines kommentares einen sessionwert mit aktuellerzeit + x sekunden setzen ... (x = anzahl der sekunden in denen man keinen kommentar schreiben kann).

              vor dem eintragen in die DB pruefen, ob der wert kleiner als der aktuelle timestamp ist

              fertig ...

              wie gesagt deine loesung koennte sicherer sein, aber warum so viele sachen am server etc. umstellen ...
              vor allem was macht man wenn man keinen eigenen server hat

              Kommentar

              Lädt...
              X