codehunter
Goto Top

Anregungen gesucht wg. Formular-Spam ohne Captcha

Hallo zusammen!

Das ist weniger eine konkrete Frage zu einem Scriptproblem sondern ich würde gern eure Meinungen und Erfahrungen mit Formular-Spam erfahren. Folgendes Szenario liegt bei mir vor:

Auf unserer Firmen-Website gibt es ein einfaches Kontaktformular. Seit einiger Zeit beobachte ich, daß Spambots das Formular "testen". Da wir keine Kopie des eingegebenen Textes an die eingegebene Absenderadresse schicken ist das reichlich sinnlos. Unsere Mitarbeiter müssen den Müll trotzdem sichten. Jetzt suche ich nach Möglichkeiten, Nachrichten von Bots gleich von vornherein nicht ins System zu lassen (nach außen hin aber normale Reaktion des Formulars "zur Tarnung")

Was ich von vornherein gleich ausschließe ist der Einsatz von Captchas.

Daher habe ich das Verhalten der Bots ein wenig analysiert und dabei ein paar Dinge festgestellt die man evtl. nutzen könnte. Zum einen rufen die Bots die Seite mit dem Formular nicht vorher ab (noch sonst irgendeine Seite) sondern werfen den POST-Request direkt an den Ziel-URL.

Daher war mein erster Gedanke, einen sessionabhängigen, dynamisch generierten Zufalls-Parameter an den POST-Target im Formular zu hängen, diesen in $_SESSION zu puffern und dann im POST-Target-Script einen 1:1-Vergleich zu machen. Funktioniert aber nur wenn der Client Cookies zuließe.

Zweitens werden ja auch sonst keine eingebetteten Inhalte wie z.B. Bilder geladen. Das brachte mich auf die zweite Idee, einfach irgendein unwichtiges Layout-Bild durch den PHP-Parser zu schicken ("getarnt" durch .htaccess-Rewrite-Anweisung) und dabei ein Flag in $_SESSION zu setzen. Hängt aber ebenfalls an den Cookies.

Drittens könnte ich einen berechneten Prüf-Parameter schon an die Links anhängen die zu unserem Kontaktformular führen welche dann auch an das POST-Target weitergereicht werden (das ginge sogar ohne aktive Session bzw. wenn jemand keine Cookies zuließe und so Möglichkeit 1 ausgehebelt wird). Der Prüf-Parameter hätte eine "Verfallszeit" von sagen wir 1 Stunde.

Viertens: Da die Bots auch keine HTTP-Header auswerten können wenn sie vorher nichts abrufen könnte ich auch einen "Location: www.irgendwo.de/irgendwas.php?check=irgendwas"-Header schicken.

Fünftens: Ich könnte das POST-Target über Rewrite-Rules veränderbar machen sodass sich die Links zum POST-Target ständig zufällig ändern wobei die Links zum POST-Target selbst zwar immer ins "Rewrite-Beuteschema" passen, aber so kodiert sind dass das Script hinter dem POST-Target daraus ebenfalls eine "Verfallszeit" berechnen können.

Sechstens: Die Namen der Formularfelder könnten dynamisch generiert werden wobei die Benennung einem bestimmten Schema folgt woraus sich eine "Verfallszeit" berechnen ließe.

Alle meine Ansätze hängen aber an der Tatsache daß die Spambots anscheinend aus einer Datenbank heraus die Links zum POST-Target sowie die Formularstruktur lesen ohne jedesmal die eigentliche Formularseite abzurufen (vermute mal aus "Performance-Gründen")

Daher habe ich noch nach einem zweiten Ansatz gesucht: Selbst wenn die Bots das Formular vorher abriefen, benötigen menschliche Nutzer deutlich länger um Texte einzugeben als Bots. Man könnte also bei obigen Ideen auch einen Start- und End-Zeitwert rein bringen und dann die Zeitspanne zwischen Formular-Abruf und POST-Request messen. Ist sie deutlich zu niedrig (sagen wir mal <20 Sekunden) spräche das auch für einen Bot.

Gibt es vielleicht noch ganz andere Ansätze, Formular-Spam-Bots das Leben schwerer zu machen?

Danke schon mal und Grüssle
Cody

Content-Key: 144271

Url: https://administrator.de/contentid/144271

Printed on: April 24, 2024 at 20:04 o'clock

Member: Snowman25
Snowman25 Jun 07, 2010 at 07:29:58 (UTC)
Goto Top
Hallo @Codehunter

Füge Blindfelder hinzu, welche per CSS versteckt werden bzw. in einen unsichtbaren Bereich verschoben werden. Bots füllen diese Felder aus. Menschen nicht. Wenn eines dieser Felder einen Inhalt hat, verwirfst du die Daten einfach.
Das WebsiteBaker-CMS benutzt diese Art der Spamabwehr automatisch. Dazu gibt es dann optional (wie im Beispiel auch) eine Prüfziffer mit Rechenaufgabe.

Siehe z.B.: http://gk-eventcatering.de/pages/kontakt.php
schaus dir einmal mit Stylesheets an, und dann ohne (Menü 'Ansicht' --> 'Webseiten-Stil' oder ähnlich)

Gruß
Snow
Member: maretz
maretz Jun 07, 2010 at 08:15:46 (UTC)
Goto Top
Moin,

also ich würde das ganze über die Session lösen. Seien wir mal ehrlich: Wieviele Clients hast du die heute einen Cookie wirklich verweigern UND die für dich einen Relevanten Inhalt schicken? Mich dürfen jetzt hier gerne alle steinigen wenn ich sage das mich diese Postings von den "Ich will meinen Rechner so dicht wie möglich machen und bin eh paranoid"-Kiddys eh nicht intressieren würden. Wenn DIE mir was wichtiges zuschicken wollen können die auch meine Mail-Adresse nehmen und das per Mail zusenden.

Wer mir aber als normaler Besucher (d.h. 99,5% der Besucher vermutlich) etwas schicken will der hat normal auch nen 08/15-Browser (IE, Opera, FF,....) und da wird scho nicht mehr gefragt....