Was tun gegen Spam-Missbrauch von Formularen?

Hallo,
ich habe einen Online-Shop, und seit wenigen Wochen das Problem, dass mein Bestellformular mit Spam überflutet wird. Irgendwie werden die Bedingungen ausgehebelt (also die erforderlichen Formulardaten werden nicht ausgefuellt), statt dessen erscheint nur eine nichtexistente Müll-Mailadresse, und unten folgt die Werbung. Also nicht normale Mails, sondern über mein Bestellformular.

Ich kenne zwar die Möglichkeit, dass man ein Feld mit schwer leserlichen Buchstaben und Zahlen lesen und die Folge eintippen muss, was die Spam-Maschinen eben nicht können. Aber ich wüsste gern, ob es noch eine andere Methode gibt. Ich möchte es nämlich meinen Kunden nicht unnötig schwer machen, eine Bestellung aufzugeben. Weiss jemand Rat?
Danke,

Julia

Hi Julia,

ich habe einen Online-Shop, und seit wenigen Wochen das
Problem, dass mein Bestellformular mit Spam überflutet wird.
Irgendwie werden die Bedingungen ausgehebelt
die erforderlichen Formulardaten werden nicht ausgefuellt)

Das lässt den Rückschluss zu, dass die Formulardaten unzureichend geprüft werden - also
beispielsweise mittels Javascript anstatt nach dem Abschicken am Server. Ein Spam-Bot ruft
das Abschicken-Script zumeist direkt auf (also die URL die im „action“ der Form steht). Wenn
die Überprüfung der gesendeten Eingaben korrekt am Server erfolgt, dürfte zumindest
ausgeschlossen sein, dass trotz leerer Pflichtfelder etwas abgeschickt wird.

dessen erscheint nur eine nichtexistente Müll-Mailadresse, und
unten folgt die Werbung. Also nicht normale Mails, sondern
über mein Bestellformular.

Sind das injection-Versuche? Also kommen darin Zeichenfolgen wie mime-type, bcc:, etc. vor?
btw. von welcher Programmiersprache reden wir hier?

Ich kenne zwar die Möglichkeit, dass man ein Feld mit schwer
leserlichen Buchstaben und Zahlen lesen und die Folge
eintippen muss, was die Spam-Maschinen eben nicht können.

Die beste Möglichkeit ist immer noch diese Möglichkeit über die Integration eines Captcha -
das stellt zumindest sicher, dass es ein Mensch ist, der die Eingaben macht, nicht irgendein
fragwürdiges Programm. Es gibt ja nicht nur die ‚unleserliche Buchstaben‘, sondern auch
leicht leserliche Rechen-Captchas:
http://www.stoppt-den-spam.info/webmaster/captcha-tu…

Aber ich wüsste gern, ob es noch eine andere Methode gibt.

Die Frage ist, ob diese Methoden alle Angriffe abdecken…

  • Bei injection-Versuchen würde ich nach den betreffenden Strings suchen, also mime-type:,
    bcc: etc. - und dann einfach nicht abschicken. Welcher Deiner Kunden will schon eine
    Nachricht mit solch einem Inhalt schicken… Solche inhaltsbasierenden Filter sind aber
    relativ einfach zu umgehen, indem die betreffenden Schlüsselwörter weggelassen werden. Aber
    fürs erste sind sie oft wirksam, wenn jemand versucht, Deinen Server als Spamschleuder zu
    missbrauchen.

  • Damit immer sichergestellt wird, dass der betreffende Poster immer die Seite des Formulars
    aufruft, schreibt und dann abschickt (was wie gesagt ein ‚normaler‘ Bot nicht macht, der
    ruft das Ziel-Script x-mal direkt auf), könntest Du für die Anfrage jeweils einen sog.
    postkey generieren. Also Du nimmst beispielsweise die IP des Nutzers und generierst beim
    Aufruf des Formulars einen kryptischen zufälligen Schlüssel, der in einem Hidden-Field beim
    Abschicken mitgesendet wird. Nach dem Generieren trägst Du ihn in eine Tabelle ein und
    löschst ihn,sobald das Abschicken-Formular mit dem Schlüssel daherkommt. Weitere Posts mit
    demselben Schlüssel lässt Du nicht zu, da es den Schlüssel nach dem Abschicken ja nicht mehr
    gibt - es muss vorher wieder ein neuer Schlüssel generiert werden, indem das Formular mit
    den Eingabefeldern aufgerufen wird. Für den normalen Nutzer ist das unsichtbar, sollte den
    Bot-Spam dafür merklich senken, wenn nicht gar stoppen (abhängig davon, wie schlau der Bot
    ist).

Ciao,
Rudy

Danke!
Wow,
vielen herzlichen Dank Rudy, für deine ausführliche Antwort!
Das muss ich mir mal mit Hilfe eines Profis (der das alles umsetzen kann was du schreibst) alles genau zu Gemüte führen!
Danke -
Julia