Gästebuch-Spam - Gegenmaßnahmen?
FlamingMoe
- perl
0 Benjamin Wilfing0 FlamingMoe0 wahsaga-1 FlamingMoe
0 Benjamin Wilfing0 FlamingMoe1 Siechfred
0 Christoph Zurnieden
Moin,
mein Gästebuch ist eine geringfügige Modifikation des PERL-Gästebuchst von sourceforge.net (wieauchimmer)... Seit einiger Zeit gibt es pro Tag bis zu zehn Einträge, die nach "professionellem" Spam aussehen, also Werbung für Hotelbuchung, Pornoseiten, etc.
Meine Frage nun: Wie kann sowas vorkommen? ich bin der Meinung, dass diese Einträge nicht "manuell" getätigt werden, sondern automatisiert. Ist das möglich, und falls ja, kann man das verhindern?? Ich habe im Archiv was gelesen, dass diese "Robots" sich auf gängige Gästebuch-Formulare spezialisiert haben. Wäre ein Ausweg dann, das Formular derart zu ändern, dass man die Eingabefelder einfach umbenennt?
Oder gibt's sonst Tipps?
thx
moe.
Hi FlamingMoe,
Meine Frage nun: Wie kann sowas vorkommen? ich bin der Meinung, dass diese Einträge nicht "manuell" getätigt werden, sondern automatisiert. Ist das möglich, und falls ja, kann man das verhindern?? Ich habe im Archiv was gelesen, dass diese "Robots" sich auf gängige Gästebuch-Formulare spezialisiert haben. Wäre ein Ausweg dann, das Formular derart zu ändern, dass man die Eingabefelder einfach umbenennt?
ich vermute mal, dass in 99,9% aller Fälle dies tatsächlich automatisiert geschieht, was schlussendlich aber eigentlich auch egal ist – nerven tut es so oder so.
Es gibt einen m.E. sehr schönen Artikel zum Thema Kommentarspam; insbesondere der 2. Versuch scheint sehr effektiv zu sein.
Viele Grüße
Benjamin
Hi Ben,
Meine Frage nun: Wie kann sowas vorkommen? ich bin der Meinung, dass diese Einträge nicht "manuell" getätigt werden, sondern automatisiert. Ist das möglich, und falls ja, kann man das verhindern?? Ich habe im Archiv was gelesen, dass diese "Robots" sich auf gängige Gästebuch-Formulare spezialisiert haben. Wäre ein Ausweg dann, das Formular derart zu ändern, dass man die Eingabefelder einfach umbenennt?
ich vermute mal, dass in 99,9% aller Fälle dies tatsächlich automatisiert geschieht, was schlussendlich aber eigentlich auch egal ist – nerven tut es so oder so.
Es gibt einen m.E. sehr schönen Artikel zum Thema Kommentarspam; insbesondere der 2. Versuch scheint sehr effektiv zu sein.
Hast Du auch eine kurze Erläuterung, wie genau ich so ein Trash-Feld aufziehe? Und wie ich den Inhalt prüfe? Bisher prüfe ich die Eingaben in den Formular-Feldern über Java-Script
thx
moe.
hi,
Es gibt einen m.E. sehr schönen Artikel zum Thema Kommentarspam; insbesondere der 2. Versuch scheint sehr effektiv zu sein.
Hast Du auch eine kurze Erläuterung, wie genau ich so ein Trash-Feld aufziehe? Und wie ich den Inhalt prüfe?
Das steht doch eigentlich schon da:
"Trash-Felder hinzufügen, die für den Besucher dank CSS nicht sichtbar sind und definiert sein müssen, aber keine Inhalte enthalten dürfen."
Also ein oder mehrere solcher Felder hinzufügen, per CSS ausblenden - und dann beim Empfang der Daten prüfen, ob die Felder leer gelassen wurden (was die Spammer nach Angaben des Autors der verlinkten Seite idR. nicht tun, die versuchen immer alle greifbaren textinput-Felder und Textareas zu befüllen).
Bisher prüfe ich die Eingaben in den Formular-Feldern über Java-Script
Dass dies den Spammer nicht interessiert, dürfte offensichtlich sein - schließlich verwendet der keinen Browser, der Javascript interpretieren könnte, sondern einfach nur Scripte, die dir Post-Daten schicken - und diese können vermutlich kaum Javascript.
gruß,
wahsaga
Bisher prüfe ich die Eingaben in den Formular-Feldern über Java-Script
Dass dies den Spammer nicht interessiert, dürfte offensichtlich sein - schließlich verwendet der keinen Browser, der Javascript interpretieren könnte, sondern einfach nur Scripte, die dir Post-Daten schicken - und diese können vermutlich kaum Javascript.
Ja, das ist mir schon klar, und wenn ich Profi wäre, müsste ich hier keine Fragen stellen. Javascript benutze ich, weil ich in PERL nicht fit genug bin. Deshalb bin ich auch darauf angewiesen, ein bereits existierendes Gästebuch zu "häcken", statt ein eigenes zu schreiben.
Hi FlamingMoe,
Hast Du auch eine kurze Erläuterung, wie genau ich so ein Trash-Feld aufziehe? Und wie ich den Inhalt prüfe? Bisher prüfe ich die Eingaben in den Formular-Feldern über Java-Script
naja, die Anforderungen sind klar definiert:
[...] die für den Besucher dank CSS nicht sichtbar sind
http://de.selfhtml.org/css/eigenschaften/positionierung.htm#display
[...] und definiert sein müssen,
Hier geht es mit serverseitigen Techniken los. Ein abgeschicktes Formularfeld erzeugt entweder im Querystring eine Variable (bei GET-Requests) oder steht im HTTP-Response-Header (bei POST). Die kannst du mehr oder weniger einfach über dein Perlskript abrufen (frag' mich jetzt bitte nicht wie), und ...
[...] aber keine Inhalte enthalten dürfen.
... sobald diese Inhalte enthalten (dafür gibt es If-Konstrukte und Vergleichsoperatoren), wird der Formularinhalt als Spam erkannt. Das Prinzip ist also ganz einfach. Die Robots merken nicht, dass das Formularfeld nicht für Ottonormalbenutzer sichtbar ist, füllen es aus und sind direkt in die Falle gelaufen.
Viele Grüße
Benjamin
Hi Ben.
Hier geht es mit serverseitigen Techniken los. Ein abgeschicktes Formularfeld erzeugt entweder im Querystring eine Variable (bei GET-Requests) oder steht im HTTP-Response-Header (bei POST). Die kannst du mehr oder weniger einfach über dein Perlskript abrufen (frag' mich jetzt bitte nicht wie), und ...
... sobald diese Inhalte enthalten (dafür gibt es If-Konstrukte und Vergleichsoperatoren), wird der Formularinhalt als Spam erkannt. Das Prinzip ist also ganz einfach. Die Robots merken nicht, dass das Formularfeld nicht für Ottonormalbenutzer sichtbar ist, füllen es aus und sind direkt in die Falle gelaufen.
Doch ich frag Dich trotzdem ;-)! Wie?
Vom Prinzip alles klar. Ich benutze den HTTP-Response-Header. Gerade weil ich allerdings mit If-Abfragen in PERL nicht umgehen kann (bisher), musste ich auch die bisherigen Abfragen über JS lösen.
dankbar für kurze Erläuterung zu "if" in PERL
moe.
Tag FlamingMoe.
dankbar für kurze Erläuterung zu "if" in PERL
Naja, das Ganze ist weniger kompliziert als du denkst. Wie du die Trash-Felder platzierst, hat dir Benjamin ja schon beschrieben. Jetzt das Ganze in Perl:
use CGI;
my $cgi = new CGI();
if($cgi->param('trash') ne "") {
die "You're a bloody fucking spammer!";
}
Zur Erklärung:
Du hast in deinem Formular ein Trashfeld definiert und mittels CSS ausgeblendet. Dieses Feld hat den Namen "trash" und als Wert einen Leerstring. Mit Hilfe des CGI-Moduls und der von diesem bereitgestellten Funktionen zur Formularverarbeitung holst du dir den Wert des Eingabefeldes namens "trash". Ist dieser nicht gleich (ne) einem Leerstring, wird das Script sofort beendet. Zusätzlich bekommt der Spammer den HTTP-Statuscode 500 übermittelt. Eine sehr effektive Variante, die ich selber in einem Gästebuch über längere Zeit erfolgreich eingesetzt habe.
Siechfred
Moin SF.
use CGI;
my $cgi = new CGI();
if($cgi->param('trash') ne "") {
die "You're a bloody fucking spammer!";
}
>
> Zur Erklärung:
>
> Du hast in deinem Formular ein Trashfeld definiert und mittels CSS ausgeblendet. Dieses Feld hat den Namen "trash" und als Wert einen Leerstring. Mit Hilfe des [CGI-Moduls](http://de.selfhtml.org/perl/module/cgi.htm) und der von diesem bereitgestellten [Funktionen zur Formularverarbeitung](http://de.selfhtml.org/perl/module/cgi.htm#formularverarbeitung) holst du dir den Wert des Eingabefeldes namens "trash". Ist dieser [nicht gleich (ne)](http://de.selfhtml.org/perl/sprache/operatoren.htm#vergleich) einem Leerstring, wird das Script [sofort beendet](http://de.selfhtml.org/perl/funktionen/kontrolle.htm#die). Zusätzlich bekommt der Spammer den HTTP-Statuscode 500 übermittelt. Eine sehr effektive Variante, die ich selber in einem Gästebuch über längere Zeit erfolgreich eingesetzt habe.
Vielen Dank. Muss das gleich mal austesten...
Kurz zur Kontrolle: ne heißt soviel wie ifnot ?
was bewirkt "die" ? und erscheint der "bloddy..." text auf der error 500 seite oder woanders??
Du hattest diese Methode eingesetzt? Davon abgekommen??
thx again
moe.
P.S.: Solche Antworten lob ich mir ;-)
Tag FlamingMoe.
Kurz zur Kontrolle: ne heißt soviel wie ifnot?
Nein, "not equal". Damit formulierst du nur die Bedingung, an die der nachfolgende Code mittels if-Abfrage gebunden wird. Die Bedingung einer if-Abfrage muss wahr sein, damit der folgende Code ausgeführt wird (siehe Bedingte Anweisungen in Perl).
was bewirkt "die"?
Das Script wird sofort beendet. Eigentlich eine unschöne Sache, aber für Spammer durchaus ein probates Mittel, denke ich :-)
und erscheint der "bloddy..." text auf der error 500 seite oder woanders??
Auf der 500er Seite, die der Server ausliefert, als Zusatzinfo.
Du hattest diese Methode eingesetzt? Davon abgekommen??
Nein, das Gästebuch existiert nicht mehr :-)
Siechfred
Hi,
mein Gästebuch ist eine geringfügige Modifikation des PERL-Gästebuchst von sourceforge.net (wieauchimmer)...
Welches bitte?
Vielleicht wollen auch die anderen Nutzer dieses Guestbooks die in http://sunflyer.ch/2005/04/30/interessante-spammer.php erwähnten Techniken dort nutzen.
so short
Christoph Zurnieden