Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Anregungen gesucht wg. Formular-Spam ohne Captcha

Frage Entwicklung PHP

Mitglied: Codehunter

Codehunter (Level 2) - Jetzt verbinden

07.06.2010 um 09:03 Uhr, 4292 Aufrufe, 2 Kommentare

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
Mitglied: Snowman25
07.06.2010 um 09:29 Uhr
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
Bitte warten ..
Mitglied: maretz
07.06.2010 um 10:15 Uhr
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....
Bitte warten ..
Ähnliche Inhalte
TK-Netze & Geräte
gelöst Fax-Ersatz gesucht - Brainstorming bzw. ANregungen (4)

Frage von hesper zum Thema TK-Netze & Geräte ...

IDE & Editoren
OID Verwaltung gesucht (5)

Frage von Herbrich19 zum Thema IDE & Editoren ...

Multimedia & Zubehör
gelöst Musikstreamingbox für Geschäft gesucht (Analoge und digitale Lautsprecher, Manipulationssicher) (11)

Frage von StefanKittel zum Thema Multimedia & Zubehör ...

Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(4)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft Office
Saubere HTML aus Word-Dokument (16)

Frage von peterpa zum Thema Microsoft Office ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Hosting & Housing
gelöst Webserver bei WIX, aber DNS Server wo anders (9)

Frage von laster zum Thema Hosting & Housing ...