Schutz vor Spammern erhöhen: CAPTCHA

Diskutiere über Web-Entwicklung, Coding und Websites.
Antworten
Benutzeravatar
Captain
Major General
Major General
Beiträge: 18373
Registriert: So 02 Jan, 2005 19:50
Wohnort: Stuttgart

Schutz vor Spammern erhöhen: CAPTCHA

Beitrag von Captain »

Wer heutzutage eine Homepage betreibt sieht sich mannigfaltigen Problemen gegenüber: Rechtliche Hindernisse und Einschränkungen, Hacker und zunehmend auch Spammer. Gästebücher, Foren und Sonstige Formulare werden nur so überflutet mit Pseudousern, falschen Einträgen und Werbebotschaften. Was steckt dahinter ?

WAS BEDEUTET 'CAPTCHA' ?

Completely Automated Public Turing-Test to Tell Computers and Humans Apart - wörtlich „Vollautomatischer öffentlicher Turing-Test, um Computer und Menschen zu unterscheiden“.

Bild
Beispiel für ein Captcha

WARUM POSTEN SPAMMER IN GÄSTEBÜCHERN UND FOREN ?

Meistens natürlich einfach nur um Werbung zu machen. Man postet einfach einen Gruß an den Webmaster und dahinter die Auforderung an alle doch auch mal auf der Seite XY nachzusehen. Üblicherweise stecken dahinter nicht mal reale Personen, sondern einfach nur Bots die das Internet nach tauglichen Formularen durchforsten und dann ihre Nachricht hinterlassen.

Fast noch wichtiger ist aber der Aspekt des Pagerankings. Im Wesentlichen verbirgt sich hinter dem Pagerank ein Algorhythmus aus dem Hause Google, der berechnet (mit weiteren Algorhythmen und Verfahren) wie beliebt eine Seite ist. Je beliebter umso besser und umso höher in den Suchergebnisse. Die Beliebtheit wird hierbei anhand der Links gemessen, die zu der Seite führen. Es spielt meist auch eine Rolle welchen Pagerank die angegriffene Seite hat. Je bekannter man also ohnehin schon ist, umso mehr Probleme bekommt man (fast wie im wahren Leben).

Und da ist der springende Punkt. Wenn ein Bot einen Eintrag im GRDB Gästebuch hinterläßt und in 100 anderen auch noch, könnte Google auf die Idee kommen, die Seite wäre beliebt, auch wenn es sich hierbei nur um Spam handelt. Deswegen leidern alle Webmaster unter demselben Problem.

WAS KANN MAN TUN ?

Im Wesentlichen gibt es 4 Wege Spam im eigenen Gästebuch oder Forum zu verhindern.

a) trad. Methode: Durch Moderation

Natürlich kann man erstmal von Hand die Einträge löschen, die Benutzerkonten sperren etc. Dies beseitigt zwar nicht das Problem, aber wenn es nur selten zu Spamming-Attacken kommt und diese nur wenig Schaden anrichten, kann dies schon eine Methode sein.

b) Etwas technischer: Durch IP-Blocking

Man könnte auf die Idee kommen, die IPs der Bots zu blocken, allerdings wechseln Spammer ihre IP häufiger und normalerweise ist eine IP nichts statisches, sondern wird dynamisch vergeben. Zudem können sich hinter einer IP hunderte von harmlosen Usern verbergen (Proxyserver). Die Lösung hat also ihre Schwächen.

c) Noch technischer: Blacklisting

Man kann natürlich seine Skripte anpacken und versuchen diverse Kriterien zu definieren, die dazu führen, dass eben kein Eintrag ins GB oder ins Forum erfolgt. Wenn beispielsweise die Nachricht im GB das Wort "viagra" enthält, dann soll eben nichts eingetragen werden. In PHP ist sowas lösbar mit der Anweisung:

Code: Alles auswählen

$spam1 = stristr($eintraggb,"viagra");

if($spam1=="")
-->eintrag;
else
echo "fehler";
Das Problem dürfte es sein diese Liste zu erweitern. Viagra ist nur ein Suchkriterium und Spammer bewerben alles mögliche. Es kann schnell sein, dass man hunderte von Wörter in so eine Liste eingeben muss und dass steigert den Verwaltungsaufwand dann doch empfindlich. Auch der obige Quellcode müßte kurz oder lang durch ein Array ersetzt werden, auch das Schreiben einer Extra-Funktion mit angeschlossenem Wörterbuch wäre ein denkbarer, aber arbeitsintensiver Ansatz.

d) Noch technischer: Captchas

Vermutlich einer der derzeit sichersten Wege sein GB zu schützen ist die Verwendung eines Captchas. Ein Captcha ist ein Zahlencode, der auf der Seite auf der man die Eintragung machen will, angezeigt wird und den der Besucher in ein Feld eingeben muss. Der Trick dabei ist, dass der angezeigte Zahlencode kein Text, sondern ein Bild ist. Das Bild wird nach einem Zufallsverfahren vom Server erstellt und kann somit vom Computer und vom Spammer-Bot nicht ohne weiteres eingelesen werden. Der Bot ist also "blind" !

Bild
Beispiel für ein Captcha

"Blind" ist ein gutes stichwort, denn Barrierefreie Seiten sind damit nur schwer gebastelt. Blinde und sehbehinderte Menschen werden damit vom Gebrauch der Seite ausgeschlossen.

Ein 100%iger Schutz vor Spammern kann aber auch mit Captchas nicht erreicht werden. Denkbar sind beispielsweise OCR-Spammer-Bots, die in der Lage sind, solche Captchas aufzudecken, einzulesen und richtig einzugeben. Dies ist im Moment aber nicht die Regel, somit ist der Spammer-Schutzfaktor schon recht hoch.

LINKS

Einige interessante Links mit Codes und Praxisbeispielen:

http://www.phpclasses.org/browse/package/1569.html
http://www.captcha.net/
http://www.deruwe.de/captcha.html
http://www.jtr.de/scripting/php/classes ... index.html
http://coffelius.arabandalucia.com/index.php?p=9
http://www.drweb.de/webmaster/sichere-f ... tcha.shtml

Captcha's bei GRDB:

http://www.grdb.de/clan/guestbook_add.php
http://www.grdb.de/forum/profile.php?mo ... greed=true

Ich hoffe ich konnte das Thema etwas näherbringen, vielleicht hats den einen oder anderen interessiert. Für Anmerkungen und Ergänzungen bin ich dankbar.

Greetz
KK
acid
Captain
Captain
Beiträge: 3841
Registriert: Do 24 Feb, 2005 13:59

Beitrag von acid »

Wobei man sagen muß, dass auch Captchas nicht das Maß der Dinge sind. Es gibt wohl einige Nachteile:

1. Da kein alt-Attribut vergeben werden darf (sonst wärs ja leicht!) nicht barrierefrei
2. Weitere "Barriere", bevor ein Nutzer eine Form abschicken kann
3. Moderne Spambots haben eigene OCR-Engines, mit denen sie einfache Captchas lesen können. Daraus folgt
4. Captchas müssen möglichst so angelegt werden, dass Bots diese nicht erkennen. Darunter leidet oft die Lesbarkeit.

Habe mich mit dem Thema Captchas und verhindern von Spam bei Formularen stark auseinandersetzen müssen (beruflich) und kann aus eigener Erfahrung sagen, dass es der Mix verschiedener Techniken macht, da man sich auf eine alleine nicht verlassen kann.
LordHellsing
Second Lieutenant
Second Lieutenant
Beiträge: 1877
Registriert: Mi 31 Mai, 2006 23:08

Beitrag von LordHellsing »

Hatte auf meiner Seite auch ein Captcha ins phpBB eingebaut, das hat aber gar nichts genützt.
Erst ein Zusatz hat dann den gewünschten Erfolg gebracht, also wie acid schon sagte: Nicht nur auf ein Pferd setzen!
acid
Captain
Captain
Beiträge: 3841
Registriert: Do 24 Feb, 2005 13:59

Beitrag von acid »

Gibt eine ultraeinfache Möglichkeit:

Da die meisten Spambots die namen eines Feldes auslesen um diese automatisch auszufüllen, kann man ihnen eine einfache Falle legen:

Normales Formular:

Code: Alles auswählen



" /> Ihr Name


Der Spambot würde bei einer standardmäßigen Überprüfung des Feldnamens ("Name") diesen einfach ausfüllen. Das kann man sich folgendermaßen zu nutze machen:

Code: Alles auswählen



 Bitte nicht ausfüllen!


 Ihr Name


Jetzt brauchen wir nur noch eine Überprüfung, ob das unsichtbare Feld "Name" ausgefüllt ist. Wenn ja, handelt es sich um einen Spambot
Damit dürfte das ganze relativ einfach in den Griff zu bekommen sein. Hat bisher immer geholfen :D. Ist natürlich nur eine Möglichkeit, gibt bestimmt ein Dutzend gängige und gute.
Benutzeravatar
Captain
Major General
Major General
Beiträge: 18373
Registriert: So 02 Jan, 2005 19:50
Wohnort: Stuttgart

Beitrag von Captain »

Es gibt noch eine Möglichkeit, die ich mir im ganzen Clanbereich zunutze gemacht habe. Was wir wissen: Bots sind dumm. Und was noch? Genau: Schnell.

Die lesen ja nicht was auf der Seite steht und tippen es auch nicht ein, was sie so an Spambotschaften von sich geben. Mit anderen Worten: Sie brauchen zum Ausfüllen eines Formulars unrealisitisch wenig Zeit.

Also habe ich die Zeit zwischen Aufruf und Absendung des Formulars gemessen und alles was unter 2 Sekunden lag ausgesondert.

Dieses Verfahren hat eigentlich auch sehr gute Ergebnisse erzielt und in Kombination mit einem Captcha zu gar keinem Spameintrag mehr geführt.
LordHellsing
Second Lieutenant
Second Lieutenant
Beiträge: 1877
Registriert: Mi 31 Mai, 2006 23:08

Beitrag von LordHellsing »

Sag das nicht so laut, warum sollten die nicht auf die Idee kommen ihre Bots so zu Programmieren, dass das Ausfüllen eben eine längere Zeit braucht?
Benutzeravatar
Captain
Major General
Major General
Beiträge: 18373
Registriert: So 02 Jan, 2005 19:50
Wohnort: Stuttgart

Beitrag von Captain »

Nun, nachdem der Clan jetzt aufgelöst ist kanns mir ja fast egal sein ;) Aber den Tipp wollte ich dennoch loswerden. Bis der einmal um die Welt ist haben wir Ruhe :flowerface:
Antworten