LiAn: Spam und Dropdownmenu

Hallo allerseits,

mal eine allgemeine Frage:

Kann ein Spambot ein Dropdownmenu (<select><option</option></select>) ausfüllen? oder ist das ein sicherer Spamschutz?

  1. Yerf!

    Kann ein Spambot ein Dropdownmenu (<select><option</option></select>) ausfüllen? oder ist das ein sicherer Spamschutz?

    Er kann dir auf jeden fall Werte für dieses Formularelement zurückschicken.

    Als Spamschutz taugt das somit nur, wenn man die Optionen entsprechend belegt. Z.B. als Auswahl zwischen Vorschau und tatsächlichen Abschicken des Formulars (Vorbelegung Vorschau).

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Er kann dir auf jeden fall Werte für dieses Formularelement zurückschicken.

      Also wenn ich das DropdownMenü als default mit value="leer" belege und sage, das Formular darf nur abgeschickt werden, wenn das DropdownMenü nicht den Wert "leer" hat. Reicht das?

      1. Hallo LiAn,

        Er kann dir auf jeden fall Werte für dieses Formularelement zurückschicken.

        Also wenn ich das DropdownMenü als default mit value="leer" belege und sage, das Formular darf nur abgeschickt werden, wenn das DropdownMenü nicht den Wert "leer" hat. Reicht das?

        Nein.
        Du solltest davon ausgehen, dass Spambots viele Möglichkeiten durchspielen - das Erkennen von Optionen eines <select>-Elements gehört mit Sicherheit dazu.
        Schick ist derzeit die Variante, einige Formularfelder mit Werten vorzubelegen (beispielsweise ein Standard-Wert oder auch die Zeichenkette ""), diese dann mit CSS auszublenden und die Annahme zu verweigern wenn die Felder mit einem anderem Wert belegt sind.

        Grüße

        Marc Reichelt || http://www.marcreichelt.de/

        --
        panic("Oh boy, that early out of memory?");
                linux-2.2.16/arch/mips/mm/init.c
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        1. Schick ist derzeit die Variante, einige Formularfelder mit Werten vorzubelegen (beispielsweise ein Standard-Wert oder auch die Zeichenkette ""), diese dann mit CSS auszublenden und die Annahme zu verweigern wenn die Felder mit einem anderem Wert belegt sind.

          Da werd ich mich mal dahinter machen.

          Sehe ich das übrigens richtig, dass ein Formularcheck mit JavaScript eigentlich genau gar nix bringt, da man JavaScript ja ohne Problem ausschalten kann?

          So ein Check sollte immer mit PHP geschrieben werden, oder?

          1. Sehe ich das übrigens richtig, dass ein Formularcheck mit JavaScript eigentlich genau gar nix bringt, da man JavaScript ja ohne Problem ausschalten kann?

            ja

            So ein Check sollte immer mit PHP geschrieben werden, oder?

            nein

            1. So ein Check sollte immer mit PHP geschrieben werden, oder?
              nein

              womit denn dann? oder stört dich mein "immer"?

              1. womit denn dann? oder stört dich mein "immer"?

                ja, dein IMMER stört ;)

                primär soll natürlich php die prüfung machen (oder eine beliebige andere serverseitige lösung) und zusätzlich gibts javascript, damit der benutzer nicht permanent post- oder get-anfragen abschickt und auf die antwort warten muss - javascript selbst ist das "komfortfeature" und darauf sollte man natürlich nicht verzichten

                1. ja, dein IMMER stört ;)

                  dacht ich mir schon.

                  primär soll natürlich php die prüfung machen (oder eine beliebige andere serverseitige lösung) und zusätzlich gibts javascript, damit der benutzer nicht permanent post- oder get-anfragen abschickt und auf die antwort warten muss - javascript selbst ist das "komfortfeature" und darauf sollte man natürlich nicht verzichten

                  also sollte man dem User die Fehlermeldung per JavaScriptAlert anzeigen und per PHP(oder sonst eine serverseitige Sprache) den Check serverseitig durchführen. Das ist ja schon fast doppelte Arbeit, aber wahrscheinlich hast du recht. Vom Usabilitystandpunkt her gesehen ist das sicher am komfortabelsten.

                  Was aber wenn JavaScript ausgeschaltet ist?

                  1. also sollte man dem User die Fehlermeldung per JavaScriptAlert anzeigen und per PHP(oder sonst eine serverseitige Sprache) den Check serverseitig durchführen. Das ist ja schon fast doppelte Arbeit, aber wahrscheinlich hast du recht. Vom Usabilitystandpunkt her gesehen ist das sicher am komfortabelsten.

                    Was aber wenn JavaScript ausgeschaltet ist?

                    wenn javascript ausgeschaltet ist, greift immer noch die serverseitige prüfung

                    darum sollst du ja _zuerst_ die serverseitige prüfung machen [1] (stichwort: affenformular) und wenn das fertig ist, baust du noch zusätzlich die javscriptprüfung ein (wenn du lust hast oder die usability verbessern willst)

                    [1] programmieren - für den benutzer findet natürlich zuerst die javascriptprüfung (wenn vorhanden) statt

      2. Yerf!

        Also wenn ich das DropdownMenü als default mit value="leer" belege und sage, das Formular darf nur abgeschickt werden, wenn das DropdownMenü nicht den Wert "leer" hat. Reicht das?

        Jein.

        1. Die Prüfung muss natürlich serverseitig erfolgen (deine Formuliereung riecht etwas nach JS...)

        2. würde ich es dem Spam-Bot nicht zu leicht machen, bei "leer" erkennt er evtl. dass er eine Andere Option mitschicken sollte.

        3. Ich würde solche Sachen immer so einbinden, dass sie den Benutzer möglichst wenig nerven. Bei einer Auswahl ziwchen leer und ok fragt der sich, was dass soll. Eine Auswahl ziwschen Vorschau und Abschicken klingt nach einem "Feature".

        4. Ich würde mich auch nicht alleine darauf verlassen und noch mehr Mittel zur Spamabwehr einbauen (Inputfeld per CSS auf display:none usw.)

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
          1. Die Prüfung muss natürlich serverseitig erfolgen (deine Formuliereung riecht etwas nach JS...)

          Ist PHP. Sorry wegen der komischen Formulierung.

          1. Ich würde solche Sachen immer so einbinden, dass sie den Benutzer möglichst wenig nerven. Bei einer Auswahl ziwchen leer und ok fragt der sich, was dass soll. Eine Auswahl ziwschen Vorschau und Abschicken klingt nach einem "Feature".

          Also das value des Select-Objekt ist "leer". Der Inhalt, also das, was der User sieht ist "Bitte auswählen".

          Es geht darum, bei einem Hotel eine Zimmerauswahl zu treffen. Und da dacht ich mir, ich könnte doch gleich noch ein wenig Spamschutz einbauen.

          1. Yerf!

            Also das value des Select-Objekt ist "leer". Der Inhalt, also das, was der User sieht ist "Bitte auswählen".

            Es geht darum, bei einem Hotel eine Zimmerauswahl zu treffen. Und da dacht ich mir, ich könnte doch gleich noch ein wenig Spamschutz einbauen.

            Das kann einen Schutz darstellen, muss aber nicht. Es gibt eben nicht *den* Spambot der immer gleich vorgeht. Möglicherweise ist er ja so programmiert, das er Auswahllisten analysiert (z.B. per Wortliste) und "leere" Einträge beim versenden vermeidet. Ansonsten kann man auch mit zufälligem Ausfüllen einen Treffer landen.

            Der beste Spamschutz ist immernoch der, mit dem der Programmierer des Bots nicht gerechnet hat...

            Gruß,

            Harlequin

            --
            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->