Compiwurstel: Unsichtbares Formularfeld gegen Robots

Hallo zusammen, ich werde zZ. mit Spams, die über das Kontaktformular meiner Webseite versandt werden, nur so überschüttet. Da ich keine Captschas einsetzen will, habe ich ein per CSS ausgeblendetes Formularfeld mit dem Namen 'email' eingebaut und siehe da: Die Robots tragen ihre (falsche) Email-Adresse alle da ein. Nun möchte ich aber per JS dafür sorgen, dass der Formularinhalt nicht versandt wird, wenn sich in diesem Feld ein Eintrag findet. Ich habe deshalb folgendes Skript eingebaut:

function spam()
{
var ok = true;
if (document.getElementById('email').value == '')
{
ok = true;
}
if (ok)
{
document.Email-Kontakt.submit();
}

else
{
document.location.href = "../index.php?section=fail";
}
}

Die Funktion wird per onClick im Submit-Button aufgerufen. Leider (oder zu meiner Schande?) wird das Formular doch versandt. Was mache ich falsch?

Viele Grüße Compiwurstel

  1. Die Funktion wird per onClick im Submit-Button aufgerufen. Leider (oder zu meiner Schande?) wird das Formular doch versandt. Was mache ich falsch?

    Ich gehe nicht näher auf deine Frage ein und Weise dich darauf hin, dass eine clientseitige Prüfung per JavaScript idR. unnütz ist, da die meisten Spambots ohnehin kein JavaScript parsen - prüfe serverseitig ob das Fake-Feld ausgefüllt wurde oder nicht und brich dort entsprechend die Verarbeitung ab.

    1. prüfe serverseitig ob das Fake-Feld ausgefüllt wurde oder nicht und brich dort entsprechend die Verarbeitung ab.

      Das heißt, das Ganze sollte besser per PHP realisiert werden? Hm, da bin ic leider noch weniger fit als bei JS

      1. Das heißt, das Ganze sollte besser per PHP realisiert werden? Hm, da bin ic leider noch weniger fit als bei JS

        Das macht nichts, man kann sich jedes Wissen aneignen - dürfte ein 3-Zeiler sein, wenn schon ein Formmailer bzw. ein Affenformular besteht.

        1. Das macht nichts, man kann sich jedes Wissen aneignen - dürfte ein 3-Zeiler sein, wenn schon ein Formmailer bzw. ein Affenformular besteht.

          Leichter gesagt, als getan! Den Formmailer habe ich von meinem Provider zur Verfügung gestellt bekommen, ich brauchte nur noch die Formularfelder einrichten und das ist HTML. Ich hatte auch schon vor meinem JS-Versuch in meinem dicken PHP-Buch gewälzt, aber kam damit nicht klar - vor allem, was die Ausgabe-Funktion angeht.

          1. Das macht nichts, man kann sich jedes Wissen aneignen - dürfte ein 3-Zeiler sein, wenn schon ein Formmailer bzw. ein Affenformular besteht.

            Leichter gesagt, als getan! Den Formmailer habe ich von meinem Provider zur Verfügung gestellt bekommen, ich brauchte nur noch die Formularfelder einrichten und das ist HTML.

            Also ein Formmailer ohne jegliche Logik?
            Abstand nehmen. Du bekommst dein Problem nicht in den Griff wenn dein Formmailer nicht drei essentelle Dinge tut:

            • Instatiierung des Formulars (ein geloggtes Unikat eines Formulars muss verlangt werden.)
            • Vorschau-Funktion
            • Archivausgabe

            Demo Perl Formmailer
            http://www.elcappuccino.ch/cgi/mail/sfm_wrapper.pl

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
  2. Hallo,

    ich werde zZ. mit Spams, die über das Kontaktformular meiner Webseite versandt werden, nur so überschüttet. [...] Ich habe deshalb folgendes Skript eingebaut:
    [...]
    Was mache ich falsch?

    du gehst davon aus, ein SPAM-Bot würde sich wie ein "normaler" Browser verhalten, insbesondere Javascript ausführen, das den DOM-Code ändert.

    Geh lieber davon aus, dass das Formular *in jedem Fall* abgeschickt wird, mach die Bewertung nach SPAM/HAM serverseitig und brich die Verarbeitung einfach ab, wenn der SPAM-Verdacht hinreichend ist.

    Ciao,
     Martin

    --
    Früher habe ich mich vor der Arbeit gedrückt, heute könnte ich stundenlang zusehen.
  3. Hallo zusammen, ich werde zZ. mit Spams, die über das Kontaktformular meiner Webseite versandt werden, nur so überschüttet.

    Erlaubt es dein Vorgang, dass ich Daten posten kann, ohne vorher eine gültige _Instanz_ des Formulars zu verlangen

    Die Funktion wird per onClick im Submit-Button aufgerufen. Leider (oder zu meiner Schande?) wird das Formular doch versandt. Was mache ich falsch?

    Versuche dein Formular ohne JS.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  4. Ausgehend von den fehlenden Programmierkenntnissen / Ressourcen wäre folgende quick & dirty Lösung für Dich womöglich passend - Formularversand funktioniert dann aber nur noch bei aktiviertem JS:

    1. Bennene Dein Script um. Alt: mail.php Neu: mailgeheim.php, Das Action Attribut im Form lässt Du aber wie gehabt.
    2. Biege vor dem Versand das Action Attribut des Forms auf das korrekte Script um.

    Wald- und Wiesenbots wirst Du damit erschlagen haben...

    1. Wald- und Wiesenbots wirst Du damit erschlagen haben...

      ... und 5% reale Besucher auch.

      Lesetipp: Security through obscurity

      1. Wald- und Wiesenbots wirst Du damit erschlagen haben...

        ... und 5% reale Besucher auch.

        Lesetipp: Security through obscurity

        Und was willst du damit sagen?

        1. Und was willst du damit sagen?

          Das es Unfug ist, ein Formular (bzw. die Ressource für dessen Verarbeitung) zu "verstecken" um es Sicherer zu machen.

          1. Und was willst du damit sagen?
            Das es Unfug ist, ein Formular (bzw. die Ressource für dessen Verarbeitung) zu "verstecken" um es Sicherer zu machen.

            Das verstecken der unmittelbaren Ressourcen-URL zugunsten einer mittelbaren URL ist eine Tugend, wenn auch nicht aus Sicherheitsgründen.
            Wir geben Usern eine API und halten die Internals von ihnen fern.
            Allerdings hätte das Mapping via serverseitigem mod_rewrite zu geschehen und nicht via JS.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
            1. Wir geben Usern eine API und halten die Internals von ihnen fern.
              Allerdings hätte das Mapping via serverseitigem mod_rewrite zu geschehen und nicht via JS.

              mfg Beat

              Toll, und was heißt das auf deutsch? Sorry, aber ich habe im Moment das Gefühl, ich habe es mit Bergführern zu tun, die oben auf dem Berg stehen und mir sagen: Komm hoch, hier oben ist ne tolle Aussicht! Ich müsste aber erst mal wissen, wie ich hochkomme!

              Nix für Ungut!
              Compiwurstel

              1. Toll, und was heißt das auf deutsch? Sorry, aber ich habe im Moment das Gefühl, ich habe es mit Bergführern zu tun, die oben auf dem Berg stehen und mir sagen: Komm hoch, hier oben ist ne tolle Aussicht! Ich müsste aber erst mal wissen, wie ich hochkomme!

                Reibe an deinem Zauberstab oder geh Steine sammeln...

                .htaccess

                RewriteEngine on
                RewriteRule ^public_app_name  path_to_my_privat_app [L,QSA]

                mfg Beat

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
                1. Reibe an deinem Zauberstab oder geh Steine sammeln...

                  Toller Satz, aber er hilft mir auch nicht wirklich weiter!

              2. Tach,

                Wir geben Usern eine API und halten die Internals von ihnen fern.
                Allerdings hätte das Mapping via serverseitigem mod_rewrite zu geschehen und nicht via JS.

                Toll, und was heißt das auf deutsch?

                ich setze mal voraus, dass du die dir potentiell nicht geläufigen Fachbegriffe bereits nachgeschlagen hast; um dir die Sätz zu erläutern, müßte man allerdings wissen worin dein Verständnisproblem liegt.

                mfg
                Woodfighter

                1. ich setze mal voraus, dass du die dir potentiell nicht geläufigen Fachbegriffe bereits nachgeschlagen hast; um dir die Sätz zu erläutern, müßte man allerdings wissen worin dein Verständnisproblem liegt.

                  Danke, dass du nochmal nachhakst. Nein, zum Nachschlagen bin ich noch nicht gekommen. Das Webseiten-Programmieren ist nur eine Nebentätigkeit von mir und ich bin im Hauptzweig z.Zt. extrem eingespannt. Bin die Sache überhaupt nur angegangen, weil rund 50 Spams pro Tag über das Kontaktformular ziemlich nerven. Das Gästebuch habe ich schon still gelegt und will es mit dem Kontaktformular nicht auch noch machen.

                  Ich denke, ich verstehe von PHP insgesamt viel zu wenig, um mit dem Satz etwas anfangen zu können, sprich mir eine konkrete Vorstellung zu machen, was und wie ich es tun könnte.

                  Viele Grüße
                  Compiwurstel

      2. ... und 5% reale Besucher auch.

        Habe ich die negative Seite des Vorschlags nicht explizit erwähnt? Ich glaube schon.

        Lesetipp: Security through obscurity

        Um bei nem Formmailer Wald- und Wiesenbots zu erschlagen, funktioniert "Security through obscurity", ein empfehlenswertes Designprinzip ist es _natürlich_ _nicht_.

        Lesetipp von mir: Den Postverlauf des OP.

        1. Habe ich die negative Seite des Vorschlags nicht explizit erwähnt? Ich glaube schon.

          Indirekt, ja.

          Um bei nem Formmailer Wald- und Wiesenbots zu erschlagen, funktioniert "Security through obscurity"

          China-Spammer sind mittlerweile ohnehin billiger - die können sogar zuverlässig Captures lösen.