Flansch: Formular-Spam: Subject überprüfen

Hallo,

Ich weiss es gibt schon ein paar Threads zum Thema, dennoch:

Ich bekomme seit ein paar Tagen massiven Spam über ein Kontaktformular. Für das Formular benutze ich so ziemlich 1:1 den Beispiel-Perl-Mailer mit Zieladresse im Script selbst ( http://aktuell.de.selfhtml.org/tippstricks/cgiperl/form-mail/index.htm ). Der Spam ignoriert die hidden inputs, deswegen sind die Mails leicht zu Filtern (Subject ist anders als das via hidden input gesetzte).

Schöner wäre es, wenn die Mails gar nicht versandt würden, i.e. wenn das Perl-Script checkt, ob Subject=DasSubjectwasichimHTMLdokumentdrinhab (oder wenns einfacher ist ob DasSubjectwasichimHTMLdokumentdrinhab in dem gesamten text vorkommt) und nix macht wenn es fehlt.

Das ist sicher sehr einfach, ich hab davon aber wenig Ahnung von Perl & Regex (ich versteh schon was das da macht im Formmailer Beispiel, will's aber nicht selber schreiben), vielleicht kann mir da jemand mit einer halbwegs idiotensicheren Zeile Perl aushelfen?

Danke im voraus, f.

  1. hi!

    naja prinzipiell sollts doch so gehn
    variable fuer subject_ueberpruefung und dann eine art bad_word_abfrage
    ##########
    my $Subject=$query->param("subject");
    ##########

    if($Subject eq "DasSubjectwasichimHTMLdokumentdrinhab" ){Success();}

    sub Success(){

    -------> E-Mail versenden:

    }

    man kann aber das fixe subject "DasSubjectwasichimHTMLdokumentdrinhab" im formular auslesen kann und somit die abfrage erfolgreich "umgehn"

    mit externem .js welches das subject "DasSubjectwasichimHTMLdokumentdrinhab" erst beim abschicken eintraegt?
    die externe datei kann man ja nur haendisch auslesen (ueber den dateipfad) sollt also nicht in der html_seite drinstehn.
    allerdings kann dann niemand mit ausgeschaltenem .js das formular abschicken, bzw. das subject is dann "falsch" und du bekommst keine mail.

    vielleicht gehts auch ganz anders :)

    ew<<

    1. if($Subject eq "DasSubjectwasichimHTMLdokumentdrinhab" ){Success();}

      sub Success(){

      -------> E-Mail versenden:

      }

      Danke für die schnelle Hilfe, funktioniert! Das mit Javascript u.ä. spar ich mir erstmal, wenn der Spam mit eigenem Subject nicht mehr kommt ist erstmal das gröbste weg.

      Zwei doofe Fragen noch:

      1. Du benutzt
      $Subject=$query->param("subject");
      beim Formmailerbeispiel ist es
      $subject = $query->param('subject');

      Ist die Art der Anführungzeichen egal oder muss ich da was beachten?

      2. In der neusten Version des Formmailers gibts die Zeile
      $subject =~ /\s/ /g
      Was macht die?

      Danke, f.

      Und wo wir gerade beim Thema Spam sind: FALLS EIN MODERATOR DAS LIEST, kann der/diejenige so freundlich sein, meine Mailadresse im ersten Posting zu löschen? Wusste nicht, das die angezeigt wird ...

      1. Hallo Flansch,

        Ist die Art der Anführungzeichen egal

        afaik, ja.

        $subject =~ /\s/ /g
        Was macht die?

        sie ersetzt beliebige whitespaces (\t,\n,Leerzeichen,...) durch ein Leerzeichen.

        Und wo wir gerade beim Thema Spam sind: FALLS EIN MODERATOR DAS LIEST, kann der/diejenige so freundlich sein, meine Mailadresse im ersten Posting zu löschen?

        afaik können Postings nachträglich nicht mehr geändert werden - auch von den Devs nicht[1].

        Wusste nicht, das die angezeigt wird ...

        Dann hättest du vorher mal ein paar Postings anschauen sollen ...

        Grüße aus Nürnberg
        Tobias

        [1] zumindest nicht ohne großen Aufwand

        1. Ist die Art der Anführungzeichen egal
          afaik, ja.

          $subject =~ /\s/ /g
          Was macht die?
          sie ersetzt beliebige whitespaces (\t,\n,Leerzeichen,...) durch ein Leerzeichen.

          Danke für die Erklärungen, das Forum ist ja fast so hilfreich wie selfhtml selbst ;)

          Grüße, f.

  2. Ich bekomme seit ein paar Tagen massiven Spam über ein Kontaktformular. Für das Formular benutze ich so ziemlich 1:1 den Beispiel-Perl-Mailer mit Zieladresse im Script selbst ( http://aktuell.de.selfhtml.org/tippstricks/cgiperl/form-mail/index.htm ). Der Spam ignoriert die hidden inputs, deswegen sind die Mails leicht zu Filtern (Subject ist anders als das via hidden input gesetzte).

    Das spielt keine Rolle, der benutzt nicht das Formular.

    Schöner wäre es, wenn die Mails gar nicht versandt würden, i.e. wenn das Perl-Script checkt, ob Subject=DasSubjectwasichimHTMLdokumentdrinhab (oder wenns einfacher ist ob DasSubjectwasichimHTMLdokumentdrinhab in dem gesamten text vorkommt) und nix macht wenn es fehlt.

    Teste ob im subjekt Newlines vorkommen, wenn ja dann ist es ziemllich sicher ein Spamversuch, bzw. der spam ist dann bereits geglückt, wenn die Mail verschickt wird.

    Struppi.