Hilfe bei Gästebuch Spam-Attacken gesucht

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

  • Hilfe bei Gästebuch Spam-Attacken gesucht

    Hi@all

    bevor hier das große 'schau mal hier und da, das hatten wir schon...' los geht, hab ich gemacht!!! - leider keine Lösung gefunden.

    Also ich hab ein eigenes Gästebuch programmiert und bekomme seit ein paar Tagen riesige Spam-Attacken.

    Jetzt hab ich schon eine BAD-IP Liste erstellt und eine Abfrage integriert.
    Desweiteren übergebe ich ein MD5 verschlüsseltes Codwort zum Überprüfen auf der herkunft des Eintragenden.

    Mein Formular ruft die Datei add-guest.php auf -->
    PHP-Code:
    <?
    ################################################################################
    # Gästebuch ADD Site
    ################################################################################
    #if (!defined("ANTI_HACK")) { header("location: start.php"); exit; }

    ################################################################################
    # Check BAD IP - IP's sperren
    ################################################################################
    $umleitung = "http://www.tagesschau.de";
    $badiptxt = "";
    $badips = array();
    if (file_exists("badip.list"))
    {
     $fd = fopen ("badip.list", "r");
     while (!feof($fd))
     {
      $buffer = trim(chop(fgets($fd, 512)));
      if (($buffer != "") && ($buffer[0] != '/'))
      {
       $badips[] = strtolower($buffer);
      }
     }
     fclose ($fd);
    }
    foreach($badips as $badip)
    {
     if ($_SERVER["REMOTE_ADDR"] == $badip)
     {
      $badiptxt="<b>ACHTUNG: BAD IP - EINTRAG !!!</b>";
     }
    }
    if ($badiptxt != "")
    {
     echo "<script>window.parent.location.href='".$umleitung."' </script>";
     //header("Location: ".$umleitung);
     exit;
    }
    ################################################################################
    ### Globals off
    ################################################################################
    if (isset ($HTTP_GET_VARS))    { $_ENV = &$HTTP_GET_VARS; }
    if (isset ($_GET)) extract($_GET);
    if (isset ($HTTP_POST_VARS))    { $_ENV = &$HTTP_POST_VARS; }
    if (isset ($_POST)) extract($_POST);
    # Codewort zur überprüfung
    $opener = (md5('fein-music'));
    # Übergebenes MD5 Codewort
    if (!isset ($md5)) {header('Location: http://www.tagesschau.de'); exit;}
    # Vergleich Codewort mit MD5 Übergabe
    if ($opener == $md5)
    {
     setlocale(LC_TIME, 'de_DE@euro', 'de_DE', 'de', 'ge');
     $tag         = strftime("%A");
     $heute       = strftime("%d.%m.%Y");
     $uhrzeit     = date("G:i:s");
     $datetime    = $tag.", ".$heute." - ".$uhrzeit." Uhr";
     $gb_year     = date('Y');

     $adminmail   = "webmaster@fein-music.de";
     $seperator   = "<div align='right'><a style='color:#CC0000; text-decoration:none' title='NACH OBEN' href='#OBEN'>∆</a></div>\n".
                    "<hr>\n\n";

     # Dateiinhalt auslesen
     $datei       = "fgb_".$gb_year.".dat";
     $oldinhalt   = file($datei) or die("Fehler beim Öffnen der Datei: ".$datei."!\n");
     $zeilen      = sizeof($oldinhalt);

     # Neuen Beitrag erstellen
     if   ( $useremail != "") { $realname="<a href='mailto:".$useremail."'>".$realname."</a>"; }
     else { $useremail  = "Keine Angabe";}
     $eintrag_neu = "<b>Geschrieben von:</b> ".$realname."<b><br>am:</b> ".$datetime."<br><b>IP:</b> ".$_SERVER['REMOTE_ADDR']."<br><br>".nl2br(stripslashes(trim($comments)))." ";

     # Neuen Beitrag einfügen
     $neuinhalt   = "";
     for ($i=0; $i<$zeilen; $i++)
     {
      $_ = $oldinhalt[$i];
      $neuinhalt .= $_;
      if (preg_match("=.*<p><!--begin--></p>.*=sU", $_))
      {
       $neuinhalt .= $eintrag_neu.$seperator;
      }
     }
     # Datei neu schreiben mit nochmaliger Überprüfung Codewort/MD5
     if ($opener == $md5)
     {
     $open = fopen($datei, "w") or die("Fehler beim Öffnen der Datei: ".$datei."!\n");
     fputs($open, $neuinhalt);
     fclose($open);
     }

     # eMail versenden
     $from = $useremail;
     $to = $adminmail;
     $subject= "Neuer Eintrag im Gästebuch FEIN-Music";
     $body = "
     <html>
     <font face=Verdana size=2 color=000080>
     Ein neuer Beitrag wurde geschrieben.<br>
     ------------------------------------------------------------------<br>
     ".$datetime." / IP-Adresse: ".getenv("REMOTE_ADDR")."<br>
     ------------------------------------------------------------------<br>
     ".$eintrag_neu."
     ------------------------------------------------------------------<br>
     <i>Webmaster<br>
     www.fein-music.de</i><br>
     <font size=1 color=black>
     ==========================================================<br>
     Diese E-Mail wurde automatisch erstellt. Sie können nicht darauf antworten !<br>
     ==========================================================</font>
     ";
     $header = "From: ".$from."\r\n";
     $header.= "Content-type: text/html";
     @mail($to, $subject, $body, $header);
     #echo "<font face=verdana size=1 color=black><br>FROM: ".$from."<br>TO: ".$to."<br>BETREFF: ".$subject."<br><br></font>".$body."<hr class=hr>";

     # Weiterleiten
     header('Location: start.php?page=guests');
    }
    else
    {
     header('Location: http://www.tagesschau.de'); exit;
    }
    ###############################################################################
    # Ende - Post Gästebuch
    ###############################################################################
    ?>
    Trotzdem kommt es wieder zu Spam-Einträgen.
    Nur wenn ich die add_guest.php sperre bleiben die Einträge aus - logisch ?!?

    Die eigentliche Eintragszeile: fputs($open, $neuinhalt); wird sogar noch mal extra geprüft.
    Wie bekomme ich das Ding jetzt einigermaßen sicher gegen Spam ?
    Hoffe es kann mir jemand helfen.

    Wie funktioniert diese Spam-Bot -Kacke, wie kriegen die das immer wieder hin sich trotz diverser Sicherheitsabfragen einzutragen?

    Thx@all

  • #2
    Hallo,

    Ich blicke in deinem script nicht ganz durch.

    diese sachen
    $HTTP_GET_VARS
    sind veraltet, stammen aus php3 und frühen php4 zeiten, nimm dafür
    $_GET['var1'];
    $_POST['var2'];

    Ich sehe in deinem script kein code der überhaupt die "sinvollen" usereingaben prüft!

    Deien bad-ip-liste kannst du vergessen....hatte ich auch mal, die tauchen immer nur 1mal auf (ausser es sind script-kidies in der ausbildung :-)
    ...die wechseln bei mir sogar jede sekunde die IP und den HOST, also kanst du damit nix anfangen.

    Dein lösung wäre:
    Ein gescheites captcha, das auch menschen entziffern können
    Da du ein gästebuch hast, schreibt man dort Glückwünsche usw rein...also alles sperren was http, oder :// oder www. beinhaltet
    dann würde ich prüfen ob die email technisch richtig ist
    dann könntest du noch eine reloadsperre rein bauen.

    So habe ich das auch und es ist noch NIE jemand durchgekommen - bin fast deprimiert :-)
    Ich schreibe auch die "bösen" einträge in eine extra datei, da sehe ich dann was die jungs treiben und kann mein script gleich mal an die neu kriegserklärung "anpassen" :-)

    Wenn das alles ist was dein gästebuch an php hat, dann ist es natürlich offen wie'n scheunentor..da kommt jeder durch....und wenn er 50x hintereinander noch "Aktuelle seite neu laden" klickt, dann hast du dort viel zum löschen.
    --------------------------------
    ergänzung:
    und nicht auf die tageschau umleiten, die könnten dort segr sauer werden, das kostet dann sehr viel abmahngebühren :-(
    Zuletzt geändert von RamonaS; 16.07.2009, 21:52.
    ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

    Kommentar


    • #3
      Hi@RamonaS

      Vielen Dank für die Antwort.
      und wenn er 50x hintereinander noch "Aktuelle seite neu laden" klickt
      und wie kann ich das verhindern?

      Kurios: eigentlich bekomme ich für jeden ''offiziellen Eintrag ein eMail zugesandt.
      Bei den Spam einträgen fehlt das allerdings.
      Also gehe ich davon aus, das nur der Eintrag selbst generiert wird, also die Seite eigentlich gar nicht wirklich abgearbeitet wird.
      Sperre ich jedoch sie Seite ganz, kommen auch keine Einträge mehr.

      Ich sehe in deinem script kein code der überhaupt die "sinvollen" usereingaben prüft!
      Das geschieht schon auf der Formularseite. errst wenn alle Einträge 'sinnvoll' sind wird auf die Eintragsseite weitergeleitet.

      Captcha möchte ich vermeiden.

      Ich prüfe ja doch schon den 'HIDDEN' Code, aber offensichtlich stört das den Spam nicht ???

      Mit der Bad-IP Liste ist es auf jeden Fall schon 'besser' geworden.

      Ich habe dieses Gästebuch auch noch auf einer anderen Seite laufen - noch - ohne Spam Einträge.

      Danke für weitere Hilfestellungen.
      Thx@all

      Kommentar


      • #4
        Auf welcher rechtlichen Grundlage könnte die Tagesschau denn dagegen vorgehen?

        Von rechtlichen Belangen abgesehen: Die Tagesschau kann nichts dafür, also ist es nicht richtig ihr den Traffic aufzuhalsen. Leite lieber nach localhost um.

        Kommentar


        • #5
          Auf welcher rechtlichen Grundlage könnte die Tagesschau denn dagegen vorgehen?
          Naja, weiß jetzt auch nicht genau, aber wenn jemand aus jux die spammer zu mir auf die seite leiten würde und die dann event. bei mir loslegen, dann würde ich bestimmt einen anwalt für internet mal befragen!
          Man sieht ja im Log woher die zu mir geleitet werden würden.

          Das geschieht schon auf der Formularseite. errst wenn alle Einträge 'sinnvoll' sind wird auf die Eintragsseite weitergeleitet.
          Ja hast du dort auch php im einsatz auf der formularseite? Wenn nicht, dann kannst du dort mit html und js auch nichts prüfen!
          JS würde das eventuell noch hinbekommen, aber wenn ich mein JS hier deaktiviere, dann kann das nichts mehr prüfen!

          Dann poste doch mal die formularseite, den diese folgeseite ist so erstmal nicht gut.

          Ich habe formularseite, also die input-felder + php überprüfung in einem einzigen php-script, das nennt sich "affenformular" weiß aber nicht mehr warum das so genannt wird :-)

          ...dann gehen wir mal die einzelnen input-felder durch.
          Was noch gut wäre, paar von diesen spam einträge zu sehen, dann kann man drauf reagieren im script.
          Zuletzt geändert von RamonaS; 17.07.2009, 18:14.
          ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

          Kommentar


          • #6
            @RamonaS: Du editierst jetzt sofort deinen letzten Beitrag und setzt QUOTE-Tags! Wie oft muss man dir das noch sagen?!? *letzte Verwarnung*

            Kommentar


            • #7
              Also bei mir habe ich folgende Dinge im Einsatz:

              Captcha
              DNS Abfrage der angegebenen Emailadresse
              Zeitsperre

              und vor allem

              Selbstfreigabe des Eintragers per Email - damit werden die anonymen Spamfuzzis wirksam geleimt, denn es erfolgt automatisch eine Löschung eines nicht bestätigten Eintrages nach einer einstellbaren Zeit (Standard 7 Tage).

              Gästebücher werden ja wenn überhaupt nur von Privatleuten und Vereinen eingesetzt.

              Anwender von diesem Gästebuch haben noch nie etwas über Spam berichtet.

              Die Dinge als Maßnahmenbündel scheinen zu wirken.

              Kommentar


              • #8
                Im DNS stehen keine Emailadressen. Den Domainpart kannst du abfragen, aber wozu? Dann weißt du dass die Domain existiert, evtl. sogar dass es einen MXer dafür gibt. Über das Postfach weißt du nichts. Da hättest du auch gleich blind drauflos senden können.

                Emailfreigabe ist übrigens eine ziemlich sichere Sache, wenn man es richtig macht. Dann brauchts auch kein Captcha mehr ... man muss ja auch an die Usability denken - ich möchte nicht dreimal zeigen müssen, dass ich Mensch bin.

                Kommentar


                • #9
                  Bei mir klappt es seit Jahren zuverlässig mit nem "Honey-Pot" - sonst brauch ich nichts. Wundere mich, dass die immer noch nicht durchgestiegen sind - sind inzwischen um die 50 Gästebücher, die ich so am laufen hab.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Zitat von onemorenerd Beitrag anzeigen
                    Im DNS stehen keine Emailadressen. Den Domainpart kannst du abfragen, aber wozu? Dann weißt du dass die Domain existiert, evtl. sogar dass es einen MXer dafür gibt. Über das Postfach weißt du nichts. Da hättest du auch gleich blind drauflos senden können.

                    Emailfreigabe ist übrigens eine ziemlich sichere Sache, wenn man es richtig macht. Dann brauchts auch kein Captcha mehr ... man muss ja auch an die Usability denken - ich möchte nicht dreimal zeigen müssen, dass ich Mensch bin.
                    Die Abfrage verhindert zumindest einen Eintrag mit einer Email die auf eine Fantasiedomain lautet und das sind nicht wenige die in Gästebüchern einfach eine erfinden.
                    Captcha ist immer gut, verhindert Spam in vielen Fällen, ist aber optional.

                    Wer einen ernsthaften Eintrag machen will der stört sich nicht dran.
                    Wer sich dran stört der soll es lassen. Man wird keine Stufe abbauen nur um es einem Einzelnen mundgerecht zu machen.

                    Wichtig ist das Resultat - keinerlei gemeldeter Spameintrag.
                    Es gibt Vereine die arbeiten damit schon seit Jahren ohne jeglichen Mist darin.

                    Kommentar


                    • #11
                      Zitat von piratos Beitrag anzeigen
                      Die Abfrage verhindert zumindest einen Eintrag mit einer Email die auf eine Fantasiedomain lautet und das sind nicht wenige die in Gästebüchern einfach eine erfinden.
                      Die bekommen dann keine Mail, können den Eintrag nicht freischalten und nach 7 Tagen wird er gelöscht. Ich sehe also immer noch keinen Grund für eine DNS-Abfrage der Mail-Domain.

                      Was meinst du mit "Captcha ist optional"? Kann man ausfüllen, muss man aber nicht? Das muss man dem User dann aber dranschreiben. Normalerweise ist ein Captcha immer ein Pflichtfeld. Da überlegt/schaut man schon gar nicht mehr sondern tippt es ab.

                      Kommentar


                      • #12
                        Die bekommen dann keine Mail, können den Eintrag nicht freischalten und nach 7 Tagen wird er gelöscht.
                        Falsch - der Eintrag wird in dem Fall garnicht erst angenommen.

                        Was meinst du mit "Captcha ist optional"? Kann man ausfüllen, muss man aber nicht?
                        Falsch - der Anwender kann entscheiden ob er Captcha grundsätzlich einsetzen will oder nicht, will er und macht er es muss man den Captchacode auch korrekt ausfüllen.

                        Kommentar


                        • #13
                          Zitat von onemorenerd Beitrag anzeigen
                          @RamonaS: Du editierst jetzt sofort deinen letzten Beitrag und setzt QUOTE-Tags! Wie oft muss man dir das noch sagen?!? *letzte Verwarnung*
                          Also wie leicht bemerkt hast, eure quote-zeugs mag ich nicht, ich kann das nicht bediehnen, extra für dich - damit ich jetzt nicht gesteinigt werde hab ich den oberen beitrage mit quote eingesetzt...

                          Ok also ich versuche in zukunft so zu antworten das ich keine quotes benötige.

                          Ich kenn den schmarn halt nicht, und jedes forum hat seinen eigenen BBS-müll...und ich hab keine lust mir das zeugs alles reinzuziehen, ok?

                          Wenn ihr alle so gut in php seit wunderts mich warum ihr kein eigenes forum schreibt - ich schreibe alles selber, wenn ich mal was klaue dann sind es ideen...

                          Das forum hat zig fehler, wenn ich das aufsuche muß ich mein validate-plugin deaktivieren weil ich zig fehlerfenster erhalte!

                          Wenn ein doctype schon xhtml ist, dann sollte man doch wissen das einzeltags mit "... / >" geschlossen wird.

                          So und jetzt könnt ihr alle sauer sein auf mich :-)


                          @Prominenter
                          Was ist nun mit dem formular mit den eingabefeldern, kommt das noch, oder keine hilfe mehr nötig ?
                          Zuletzt geändert von RamonaS; 17.07.2009, 18:22.
                          ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                          Kommentar


                          • #14
                            Das forum hat zig fehler,
                            Stimmt die Anzahl der HTML Fehler mit 170 (laut w3) ist schon ganz schön heftig.

                            Kommentar


                            • #15
                              Zitat von piratos Beitrag anzeigen
                              Stimmt die Anzahl der HTML Fehler mit 170 (laut w3) ist schon ganz schön heftig.
                              Ja ich bin da ohnehin sehr pingelig...bei mir wäre ein einziger fehler schon sehr schlim....das kann zur folge haben das bestimmte webbrowser in einen quircks-mode umschalten (Einstellung: notlösung) ...dann passt in der regel kein design mehr und alles sieht zerschossen aus.

                              Aber je mehr fehler zu haben ist anscheinen zZ IN :-)
                              teste mal beim w3c die großen webseiten, kannst mit microsoft.com gleich mal anfangen, google, web.de usw.

                              Wenn du eine seite findest bei der der balken grün ist, dann gibts von mir ein freibier :-)
                              ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                              Kommentar

                              Lädt...
                              X