SPAM-Protektion
hotti
- programmiertechnik
hi,
angeregt durch die Diskussion in zurückliegenden Threads machte ich mir zu diesem Thema auch so meine Gedanken. Fakt ist: Jeder SPAM-Schutz an Webformularen (Gästebuch, Mail...) ist knackbar, andererseits gibt es die Möglichkeit, die Knackbarkeit zu erschweren.
In einem Mailformular habe ich für SPAM-Bots mehrere Hürden eingebaut, wer Lust und Laune hat, schaue sich das mal an und teste es:
http://rolfrost.de/cgi-bin/testform.cgi
Ein Mailversand erfolgt nicht, das Formular kann bedenkenlos submitted werden, auch die eMail-Adresse wird nicht geprüft.
Für den Fall, dass das Formular erfolgreich verarbeitet wurde, sieht der Benutzer ein schlichtes "OK".
Für den Fall, dass das Script meint, das Formular wurde zum Spammen missbraucht, sieht der Benutzer in den Response den Text "SPAM".
Also, an alle Hacker-Jünger, nun auch die Herausforderung:
Findet mal bitte raus, was an dem Formular für SPAM-Bots erschwerend ist bzw. sein soll (lt. meiner Implementierung).
Über Eure Feedbacks (hier in diesem Thread) freute ich mich,
bis dann, Hotte
Gröhl, hab dir einen flotten http://pr0n.com/ gesendet.
nein, hast Du nicht. Wie ich weiter oben schrieb: bei dem Formular ist der Mailer abgeschaltet, es ist nur zum testen, zum herausfinden, wie es automatisiert aufgerufen werden kann von einem Bot.
Hast Du rausgefunden, was der Bot tun muss, damit das geht?
Viele Grüße,
Hotte
Hallo hotti!
Für den Fall, dass das Formular erfolgreich verarbeitet wurde, sieht der Benutzer ein schlichtes "OK".
[url:...]...[/url] geht durch. Dann freu Dich auf ellenlange Linklisten zu V14gr4, Pornos und dergleichen...
Viele Grüße aus Frankfurt/Main,
Patrick
Hi Patrick,
Für den Fall, dass das Formular erfolgreich verarbeitet wurde, sieht der Benutzer ein schlichtes "OK".
[url:...]...[/url] geht durch. Dann freu Dich auf ellenlange Linklisten zu V14gr4, Pornos und dergleichen...
Vielen Dank fürs Mitmachen!
BB-Code, nunja, das ist eine andere Geschichte, die lasse ich hier außen vor.
Zurück zum Thema: In meinem Formular habe ich ein paar Hindernisse eingebaut für Bots, u.a. ist es definitiv nicht möglich, 'zig POSTs per Script auf das Formular abzusenden.
Siehst Du weitere Hindernisse, die ich für einen Bot eingebaut habe, wenn ja, sind die wirksam?
Viele Grüße,
Hotte
Siehst Du weitere Hindernisse, die ich für einen Bot eingebaut habe, wenn ja, sind die wirksam?
Solange der Normaluser schon Probleme mit deinem Formular hat, ist es völlig witzlos, es weiter zu entwickeln. Oder hälst du es für Sinnvoll, viele normale User auszugrenzen, nur um Spambots zu überlisten?
Hallo,
Findet mal bitte raus, was an dem Formular für SPAM-Bots erschwerend ist bzw. sein soll (lt. meiner Implementierung).
Blockiert das Teil überhaupt irgendwas über den Content ;-) Selbst reines Auf-der-Tastatur-Rumgehacke kommt durch.
Zur Blockade via AJAX und Cookies: Ob sich das aushebeln lässt, weiss ich nicht.
Gruß
Hallo,
Zur Blockade via AJAX und Cookies: Ob sich das aushebeln lässt, weiss ich nicht.
Aha. Ajax und Cookies! Du bist auf dem richtigen Weg. Jow, die habe ich im Spiel. Hast Du herausgefunden, wie Beides zusammen und was für eine Rolle das spielt bezüglich der Frage: "Automatisiertes Versenden des Formulars verhinderen"?
Viele Grüße,
Horst
Hallo,
Beim normalen Aufruf wird eine "mailid" zufällig erzeugt und in einem hidden-Field gespeichert. Den Sinn von dem cleanup-Befehl hab ich noch nicht ganz verstanden (macht wahrscheinlich irgendetwas auf dem Server). Dann wird erneut ein AJAX-Request abgesetzt, diesmal mit der mailid als Parameter. Die Ausführung wird auf dem Server um 5 Sekunden verzögert, dann ein Cookie gesetzt. Ich nehme an, dass dabei auch die mailid auf dem Server als gültig gespeichert wird (nach den 5 Sekunden).
Nur wenn hidden-Field und Cookie übereinstimmen und (sofern ich richtig liege) die id als gültig gilt, wird das Formular durchgelassen.
Gruß
Hallo,
Beim normalen Aufruf wird eine "mailid" zufällig erzeugt und in einem hidden-Field gespeichert. Den Sinn von dem cleanup-Befehl hab ich noch nicht ganz verstanden (macht wahrscheinlich irgendetwas auf dem Server). Dann wird erneut ein AJAX-Request abgesetzt, diesmal mit der mailid als Parameter. Die Ausführung wird auf dem Server um 5 Sekunden verzögert, dann ein Cookie gesetzt. Ich nehme an, dass dabei auch die mailid auf dem Server als gültig gespeichert wird (nach den 5 Sekunden).
Nur wenn hidden-Field und Cookie übereinstimmen und (sofern ich richtig liege) die id als gültig gilt, wird das Formular durchgelassen.
Hohohhooooo ;-)
Du hast es *G*
Aufbauend auf meinen Artikel wirken hier Cookies und Ajax wie folgt zusammen:
Beim Senden prüft das CGI drei Dinge:
if(!$mailid ){ # in DB!?
redir("$ENV{SCRIPT_NAME}?drop=1");
}
elsif( ($newtime - $timestamp) < $delay ){
redir("$ENV{SCRIPT_NAME}?drop=1");
}
elsif( $mailcookie ne $sessionkey ){
redir("$ENV{SCRIPT_NAME}?drop=1");
}
else{
$dbh->do("DELETE FROM spamprot WHERE sessionkey='$sessionkey'");
# Mail versenden mit Net::SMTP;
#mail($mailhost, $to, $subject, $mesg, $from, '');
redir("$ENV{SCRIPT_NAME}?success=1");
}
Ähhm, es gibt noch eine vierte Bedingung, aber die hab ich mir nicht selbst ausgedacht und die lassen wir mal weg.
Ein Bot, der dieses Formular automatisieren will, muss also folgendes tun:
1. GET auf das Script ohne Parameter um die sessionid zu bekommen,
2. 5 Sekunden warten (!),
3. POST mit der 'sessionid' im Cookie.
(3.) geht nur einmal.
Viele Grüße,
Hotte
Hohohhooooo ;-)
Du hast es *G*
Viele Grüße,
Hotte
Das steht ja auch schon so auf Deiner Homepage, die ich gegen 18.oo Uhr gelesen habe, nur mit 10 Sekunden, oder nicht ?
mfg
Cygnus
Aufbauend auf meinen Artikel wirken hier Cookies und Ajax wie folgt zusammen:
AJAX und Cookies als Vorraussetzung für ein Kontaktformular halte ich für absolut indiskutabel.
Mag bei einer kleinen privaten Webseite noch halbwegs akzeptabel sein, bei Firmen völlig unmöglich. In Firmennetzwerken ist immer noch oft Javascript eingeschränkt oder deaktiviert. Ähnliches gilt für Cookies, je nach Firewall/Proxy.
Somit kann ein Forumlar, das diese Techniken zwingend erfordern, für eine Firma eunen Auftragsverlust bedeuten.
Hallo,
Irgendwie habe ich inzwischen das Gefühl, dass es keinen, auch nur zufriedenstellenden SPAM-Schutz gibt. Entweder werden Benutzer ausgeschlossen und/oder (meistens "und") die Bots schaffen es trotzdem. Da bleibt einem wohl nichts anderes übrig als das gute alte Sortieren von Hand...
Gruß
Hallo,
Man lese auch deine entsprechende Abhandlung darüber ;-)
Yes ;-)
Aber da steht nicht alles, was ich in meinem Testformular verbaut habe *G*
Vielen Dank und viele Grüße,
Hotte
Über Eure Feedbacks (hier in diesem Thread) freute ich mich,
bis dann, Hotte
Hiho,
ich finde, dass eine gute Implementierung eines Spam-Schutzes gänzlich ohne JavaScript auskommen sollte. JS kann optional sein, aber sollte keine Pflicht sein. Es gibt da viele Tricks die man anwenden kann...
Gruß,
Andreas
Hallo,
nun auch die Herausforderung:
Findet mal bitte raus, was an dem Formular für SPAM-Bots erschwerend ist bzw. sein soll (lt. meiner Implementierung).
ich sehe keine Herausforderung:
"Security by obscurity" funktioniert nicht. Auch nicht bei Dir.
Freundliche Grüße
Vinzenz
Hello,
ich sehe keine Herausforderung:
"Security by obscurity" funktioniert nicht. Auch nicht bei Dir.
Das sehe ich bei Formmailern und ähnlichen Dialogen im Web anders.
Man muss nur genügend untersachiedliche Methoden gleichzeitig vorhalten und oft genug wechseln.
Aber um auch Dich zu Worte kommen zu lassen: Wie würdest Du es denn machen?
Session und Cookie sind ja für einen Bot keine Geheimnisse mehr. Die sollte jeder "anständige Spam Bot" inzwischen drauf haben.
Bitte "Session" nicht mit "Authentifizierung" verwechseln,
aber das muss ich Dir ja nicht sagen.
Ein harzliches Glückauf
Tom vom Berg
Hallo Vinzenz,
nun auch die Herausforderung:
Findet mal bitte raus, was an dem Formular für SPAM-Bots erschwerend ist bzw. sein soll (lt. meiner Implementierung).
ich sehe keine Herausforderung:
"Security by obscurity" funktioniert nicht. Auch nicht bei Dir.
OK, dann sei sogut, schreib hier mal auf, was ein SPAM-Bot tun muss, um dieses Formular automatisch zu versenden.
Hinweis: den Thread habe ich ca 17 Uhr eröffnet. Bisher hat keiner herausgefunden, was ein Bot tun muss, um dieses Formular automatisch zu versenden und somit zum SPAM zu missbrauchen.
Viele Grüße,
Horst Haselhuhn
Für den Fall, dass das Script meint, das Formular wurde zum Spammen missbraucht, sieht der Benutzer in den Response den Text "SPAM".
Mailadresse: eine meiner echten Mailadressen
Betreff: Anfrage
Text: Das ist eine Testnachricht
Das Formular meint, es wäre SPAM. IMO nicht wirklich optimal.
Für den Fall, dass das Script meint, das Formular wurde zum Spammen missbraucht, sieht der Benutzer in den Response den Text "SPAM".
Mailadresse: eine meiner echten Mailadressen
Betreff: Anfrage
Text: Das ist eine TestnachrichtDas Formular meint, es wäre SPAM. IMO nicht wirklich optimal.
Hmm,
das kann ich beim besten Willen nicht nachvollziehen. Mit den von Dir genannten Eingaben meldet mein Formular "OK".
Hotte
das kann ich beim besten Willen nicht nachvollziehen. Mit den von Dir genannten Eingaben meldet mein Formular "OK".
Ich hab es grade nochmal versucht, wieder SPAM.
Ich arbeite unter Debian/Lenny, Gnome, Iceweasel 2.0.0.14, Javascript aktiviert.
Die verwendete Mailadresse will ich hier nicht nennen, aber es ist keine Freemail-Adresse sondern eine eigene Domain auf einem eigenen Server. Weder Server noch Domain befinden sich auf irgendwelchen Blacklisten.
Nachtrag:
Ich hab Cookies abgeschaltet. Bei mir kommen nur Cookies durch, die auf ner Whitelist stehen.