Handlen von Spambots

Hi,

wie handelt ihr den Umgang damit?

„Dank“ OCR’s sind ja Captchas auch überflüssig geworden, außer man macht den Captcha so schwer das es vom Usability-Aspekt nur noch nervt, da man zu viele Versuche braucht. Ich hatte schon Erfahrungen, dass ein Captcha mit 4 Buchstaben + 6 Zufallslines und Zufallstreuung von Punkten, Probleme bereiten kann.

Solange Bot’s kein CSS lesen können, kann man mit display:none ein Feld eintragen welches Serverseitig auf empty abgefragt wird, eine hidden Feld mit time() finde ich nicht hilfreich, da wenn ich so einen Bot programmieren würde, immer einen Menschen simulieren würde (Zeiteingaben). Wie handelt ihr das oder welche Erfahrungen habt ihr mit aktuellen Projekten und Spambots?

Wie handelt ihr das
oder welche Erfahrungen habt ihr mit aktuellen Projekten und
Spambots?

habe gute erfahrungen mti dem captcha plugin und der js-methode von dokuwiki gemacht.
https://www.dokuwiki.org/plugin:captcha
basiert auf der annahme, dass spambots kein js interpretieren. die aufgabe ist text in ein input feld zu kopieren. der browser kann das mit js automatisch machen, damit muss der user nix tun. wenn der user kein js anhat, verhält es sich wie ein inputfeld.

Hi Jörg,

habe gute erfahrungen mti dem captcha plugin und der
js-methode von dokuwiki gemacht.
https://www.dokuwiki.org/plugin:captcha
basiert auf der annahme, dass spambots kein js interpretieren.
die aufgabe ist text in ein input feld zu kopieren. der
browser kann das mit js automatisch machen, damit muss der
user nix tun. wenn der user kein js anhat, verhält es sich wie
ein inputfeld.

ich würde gern keine Captchas mehr verwenden, weil das eine zusätzliche Hürde darstellt, das man so was in einem Register-Formular für ein Unix oder PC-Forum machen kann sei mal dahin gestellt. Aber für ein Range von Usern/Kunden von: „Ich weiss was Windows7 ist zu DAU“, würde ich gerne so was vermeiden => keine zusätzliche Barriere.

In welchen Bereich verwendest du, deine vorgeschlagene Library (ich hatte bis dato die verwendet: https://www.phpcaptcha.org/ ), kannst du da Beispiele=>Bezug Erfolgserlebnisse nennen => im Bezug wo du das verwendet hast?

Ich benutze seit 3 Jahren für wordpress Askimet (5$/Monat) jede Spam wird erkannt, jedoch gibt es Leute die möchten das sparen, im Endeffekt macht Askimet nicht viel anderes (grob) mal time()? + austricksen der Bots und natürlich weitaus mehr (string-analyse usw.)…die eigentliche Frage war, ohne Captchas die Problematik zu lösen.

wie handelt ihr den Umgang damit?

„Dank“ OCR’s sind ja Captchas auch überflüssig geworden, außer
man macht den Captcha so schwer das es vom Usability-Aspekt
nur noch nervt, da man zu viele Versuche braucht.

Es gibt Captchas, wo man eine kleine Rechenaufgabe lösen muss, da steht im Bild dann 12+7 und du musst in das Feld das Ergebnis eintragen. Die reine Texterkennung reicht nicht, der Bot müsste das gelesene auch interpretieren. Dadurch kann man folglich das Bild gut lesbar machen für den Menschen oder es ganz in normalem Text umsetzen.

Das klappt in der Praxis mäßig gut, da die Benutzer erst eine kleine Anleitung lesen müssen, auch wenn sie nur „Tragen Sie das Ergebnis von 12 + 7 hier ein:“ ist. Aber es ist allemal besser als das von dir beschriebene Pixelgewirr.

Wenn man diesem Prinzip folgt, dann kann man da beliebig die Fantasie spielen lassen:

Beispiel: Du hast ein Feld Name und in dein Captcha-Feld soll der Benutzer den ersten und den letzten Buchstaben seines Namen eintragen.

Oder: Du schreibst einen Satz hin und forderst deinen Benutzer auf, das zweite Wort des Satzes abzutippen.

Also alles Aufgaben, wo man den Sinn einer Aufforderung verstehen muss, nicht nur den bloßen Text. Ich denke, damit hast du lange Zeit Ruhe.

Solange Bot’s kein CSS lesen können, kann man mit display:none
ein Feld eintragen welches Serverseitig auf empty abgefragt
wird,

Finde ich jetzt auch nicht glücklich, woher weißt du denn ob die Bots nicht CSS können? Ist ja nun nicht so eine Kunst. Und selbst wenn sie es JETZT nicht können, vielleicht können sie es in einem halben Jahr, dann brauchst du wieder eine neue Lösung.

Das gleiche gilt für alle Lösungen mit JS. Du weißt nicht, ob ein Bot kein JS kann.

eine hidden Feld mit time() finde ich nicht hilfreich,
da wenn ich so einen Bot programmieren würde, immer einen
Menschen simulieren würde (Zeiteingaben).

Das könnte man unterstützend machen, aber wozu brauchst du dann ein Feld? Dann speicher einfach beim Aufruf des Formulars einen Sessioncookie und speichere dir zu der Session die Aufrufzeit. Und jetzt akzeptierst du das Formular erst, wenn 1min vergangen ist, ansonsten forderst du halt doch zur Eingabe eines Captchas an.

Oder wenn du keine Cookies willst, dann erzeugst du halt die SessionID in ein hidden-Feld, was mit dem Formular übertragen wird. Damit kannst du dann serverseitig wieder alle Prüfungen machen, die dir so einfallen.

Wenn du das rein serverseitig machst, dann hat der Bot keine Chance von den Namen und Inhalten der Inputfelder auf die durchgeführten Prüfungen zu schließen.

Denn wenn es ein hidden Textfeld gibt mit Namen „FormLoad“ und dem Inhalt „2015-04-23 08:12:15“, dann könnte der kluge Bot eventuell mit einer zeitlichen Verzögerung reagieren.

Wenn du aber ein Sessioncookie hast oder ein hidden Textfeld „SessionID“ mit dem Inhalt „Jdne9asN294Ndl32mf02h4“, dann kann der Bot nur sehr schlecht raten, ob du eine zeitliche Prüfung oder sonsteine Prüfung machst.

MfG. Robert

P.S: Bitte das Plural S nicht mit Apostroph wegtrennen, das ist unnötig und schlicht falsch. Also statt OCR’s bitte OCRs.

http://idiotenapostroph.de.vu/

Hallo ,

ich würde gern keine Captchas mehr verwenden, weil das eine
zusätzliche Hürde darstellt, das man so was in einem
Register-Formular für ein Unix oder PC-Forum machen kann sei
mal dahin gestellt. Aber für ein Range von Usern/Kunden von:
„Ich weiss was Windows7 ist zu DAU“, würde ich gerne so was
vermeiden => keine zusätzliche Barriere.

Also verkaufst Du dein Produkt einfach nicht richtig .
Das was du da als argument bringst würde dir keine werbeagentur
so bestätigen .
Denn die Probleme die enstehen dadurch das kein Mensch sich anmeldet
sondern ein Automat ist in der Folge schlimmer als das Abfragen einer Menschlichen bestätigung.

Ich erkläre das meinem Kunden so :
Sie können natürlich keine Chaptchas benutzen . Dafür können sie dann ein par Leute einstellen , die nach der Registrierung beim Kunden zurückrufen oder alle Eingaben die z.b. in Forum etc gemacht werden kontrolliert .

Das Chaptcha gibts gratis und ich bau ihnen das für XX Euro ein .

Also wollen wir ein Service Center gründen oder ein Chaptcha benutzen ?

aber mal was zum chaptcha

ich finde die am besten wo man nur etwas anklicken muss
z.b. den offenen kreis finden auf einem bild etc .
Die sind einfach , für jeden lösbar (sogar kinder schaffen das)
Heute sollte man ein HTML5 chaptcha nehmen, da Flash ja so ein
Problem aufm IPHONE ist :smile:

Eigentlich mal eine gute Idee ein CANVAS Chaptcha zu machen .
Ein kleines Spiel wäre auch kool . z.b. ein Würfel und dann eine figur die anzahl vortbewegen etc …

Ach es kann so schöne chaptchas geben … vielleicht denken wir uns einfach eins aus und ich programmier das dann .

und wenn man das toppen will ,
dann macht man einen sinnvollen captcha , also eins
was mit dem unternehmen verbunden ist und vielleicht gleich mal
eine Aufgabe löst , wie ein spiel halt .

Dann würde sogar noch was positives für den Kunden rauskommen .
Kleine Kunden Einführungsbetreungscaptcha

Aber eins geht immer , wenn Captcha dann am besten vor dem Ausfüllen der Registrierung .
Es nerft unheimlich wenn man X sachen eingeben muss und dann auch noch ein captcha lösen soll . Am besten ist es als eingangskontrolle zur registrierung oder nach der registrierung zum abschicken dieser . Das ist meist noch vertretbar . Das empfindet der Kunde dann auch eher als Pro Aufgabe und nicht als Negative Aufgabe .

Am schlimmsten ist wenn nach dem captcha auf einmal das passwort neueingegeben werden muss , dann ist man meist nach 3 versuchen erst glücklich … das kann dann schon mal dazu verführen sich woanders umzuschauen .

Hi Robert,

Danke für deine Antwort.

wie handelt ihr den Umgang damit?

„Dank“ OCR’s sind ja Captchas auch überflüssig geworden, außer
man macht den Captcha so schwer das es vom Usability-Aspekt
nur noch nervt, da man zu viele Versuche braucht.

Es gibt Captchas, wo man eine kleine Rechenaufgabe lösen muss,
da steht im Bild dann 12+7 und du musst in das Feld das
Ergebnis eintragen. Die reine Texterkennung reicht nicht, der
Bot müsste das gelesene auch interpretieren. Dadurch kann man
folglich das Bild gut lesbar machen für den Menschen oder es
ganz in normalem Text umsetzen.

Wäre ich mir nicht so sicher, der Bot könnte auch ein eval() ausführen.

Das klappt in der Praxis mäßig gut, da die Benutzer erst eine
kleine Anleitung lesen müssen, auch wenn sie nur „Tragen Sie
das Ergebnis von 12 + 7 hier ein:“ ist. Aber es ist allemal
besser als das von dir beschriebene Pixelgewirr.

Wenn man diesem Prinzip folgt, dann kann man da beliebig die
Fantasie spielen lassen:

Beispiel: Du hast ein Feld Name und in dein Captcha-Feld soll
der Benutzer den ersten und den letzten Buchstaben seines
Namen eintragen.

Das kam mir auch schon in den Sinn jedoch braucht es dazu auch kein Captcha mehr, sondern kann die Fragen in einem Array speichern, welche per Zufall ausgewählt werden und Bezug auf die Eingaben nehmen, wie in deinem Beispiel angeführt.

Oder: Du schreibst einen Satz hin und forderst deinen Benutzer
auf, das zweite Wort des Satzes abzutippen.

Hier habe ich bedenken, es darf kein Kunde abspringen, ich hatte schon mal etwas, aus meiner Ansicht, als idiotensicher implementiert -> es finden sich immer zwei, die trotzdem das nicht verstehen.

Solange Bot’s kein CSS lesen können, kann man mit display:none
ein Feld eintragen welches Serverseitig auf empty abgefragt
wird,

Finde ich jetzt auch nicht glücklich, woher weißt du denn ob
die Bots nicht CSS können? Ist ja nun nicht so eine Kunst. Und
selbst wenn sie es JETZT nicht können, vielleicht können sie
es in einem halben Jahr, dann brauchst du wieder eine neue
Lösung.

Das sollte nur ein zusätzliches Feature sein und nicht allein Spambots ausschließen.

eine hidden Feld mit time() finde ich nicht hilfreich,
da wenn ich so einen Bot programmieren würde, immer einen
Menschen simulieren würde (Zeiteingaben).

Das könnte man unterstützend machen, aber wozu brauchst du
dann ein Feld? Dann speicher einfach beim Aufruf des Formulars
einen Sessioncookie und speichere dir zu der Session die
Aufrufzeit. Und jetzt akzeptierst du das Formular erst, wenn
1min vergangen ist, ansonsten forderst du halt doch zur
Eingabe eines Captchas an.

Oder wenn du keine Cookies willst, dann erzeugst du halt die
SessionID in ein hidden-Feld, was mit dem Formular übertragen
wird. Damit kannst du dann serverseitig wieder alle Prüfungen
machen, die dir so einfallen.

Wenn du das rein serverseitig machst, dann hat der Bot keine
Chance von den Namen und Inhalten der Inputfelder auf die
durchgeführten Prüfungen zu schließen.

Denn wenn es ein hidden Textfeld gibt mit Namen „FormLoad“ und
dem Inhalt „2015-04-23 08:12:15“, dann könnte der kluge Bot
eventuell mit einer zeitlichen Verzögerung reagieren.

Zwar steht kein Datum in dem Feld sondern der numerische Wert von time(), aber genau deswegen hielt ich das ja nicht für sinnvoll, da „kluge“ Bots bestimmt Verzögerungen mit eingebaut haben.

Wenn du aber ein Sessioncookie hast oder ein hidden Textfeld
„SessionID“ mit dem Inhalt „Jdne9asN294Ndl32mf02h4“, dann kann
der Bot nur sehr schlecht raten, ob du eine zeitliche Prüfung
oder sonsteine Prüfung machst.

Wie schon erwähnt eine zeitliche Prüfung halte ich nicht für sinnvoll, eine sonstige Prüfung im Bezug SessionID im hidden-Feld zu Bot, fällt mir spontan auch keine ein. Ne Idee?

Gruß XXD

Hi TechPech,

Danke für deine Antwort.

Hallo ,

ich würde gern keine Captchas mehr verwenden, weil das eine
zusätzliche Hürde darstellt, das man so was in einem
Register-Formular für ein Unix oder PC-Forum machen kann sei
mal dahin gestellt. Aber für ein Range von Usern/Kunden von:
„Ich weiss was Windows7 ist zu DAU“, würde ich gerne so was
vermeiden => keine zusätzliche Barriere.

Also verkaufst Du dein Produkt einfach nicht richtig .
Das was du da als argument bringst würde dir keine
werbeagentur
so bestätigen .
Denn die Probleme die enstehen dadurch das kein Mensch sich
anmeldet
sondern ein Automat ist in der Folge schlimmer als das
Abfragen einer Menschlichen bestätigung.

Ich erkläre das meinem Kunden so :
Sie können natürlich keine Chaptchas benutzen . Dafür können
sie dann ein par Leute einstellen , die nach der Registrierung
beim Kunden zurückrufen oder alle Eingaben die z.b. in Forum
etc gemacht werden kontrolliert .

Das Chaptcha gibts gratis und ich bau ihnen das für XX Euro
ein .

Also wollen wir ein Service Center gründen oder ein Chaptcha
benutzen ?

In dem konkreten Fall, haben die aber ein „Servicecenter“ und müssen auch ständig die Eingaben prüfen, da sie nur so planen können.

Die Idee mit dem Würfel-Bild im Captcha finde ich nicht schlecht, ich hatte eh für ein Tutorial mit Zephir(Php-Extensions -> .so - Entwicklung) nach einem Thema gesucht (hatte gestern schon angefangen das zu schreiben als „lineare Algebra PHP-Extension“), aber vielleicht wäre so was nützlicher.

Mal an dich eine Frage, da du dich ja ziemlich gut mit Javascript auskennst, in dem Formular gibt es 4 selects welche alle Ajax benutzen und damit ein: (Pseudo-Code) open(url).read() natürlich leer sind, serverseitig wird beim versenden des Formulars noch mal geprüft, ob die Werte auch zusammenpassen (Bsp: Category A kann unmöglich Product BB haben sondern nur AB,AC usw.), zusätzlich sind die Werte (value=DB-ID), also in dem POST reinzuschreiben „Produktname“ würde zum Fehler führen. Allein das sollte doch schon „alle“ Bots ausschließen, oder übersehe ich hier was?

Gruß XXD

Hi Jörg,

habe gute erfahrungen mti dem captcha plugin und der
js-methode von dokuwiki gemacht.
https://www.dokuwiki.org/plugin:captcha
basiert auf der annahme, dass spambots kein js interpretieren.
die aufgabe ist text in ein input feld zu kopieren. der
browser kann das mit js automatisch machen, damit muss der
user nix tun. wenn der user kein js anhat, verhält es sich wie
ein inputfeld.

ich würde gern keine Captchas mehr verwenden, weil das eine
zusätzliche Hürde darstellt, das man so was in einem
Register-Formular für ein Unix oder PC-Forum machen kann sei
mal dahin gestellt. Aber für ein Range von Usern/Kunden von:
„Ich weiss was Windows7 ist zu DAU“, würde ich gerne so was
vermeiden => keine zusätzliche Barriere.

der von dir genannte user kriegt davon nix mit, weil bei ihm das javascript einfach die aufgabe uebernimmt.

In welchen Bereich verwendest du, deine vorgeschlagene Library
(ich hatte bis dato die verwendet: https://www.phpcaptcha.org/
), kannst du da Beispiele=>Bezug Erfolgserlebnisse nennen =>
im Bezug wo du das verwendet hast?

das o.g. war ein wiki für ein „offene werkstatt“-projekt, also gemischtes endpublikum.

Ich benutze seit 3 Jahren für wordpress Askimet (5$/Monat)
jede Spam wird erkannt, jedoch gibt es Leute die möchten das
sparen, im Endeffekt macht Askimet nicht viel anderes (grob)
mal time()? + austricksen der Bots und natürlich weitaus mehr
(string-analyse usw.)…die eigentliche Frage war, ohne
Captchas die Problematik zu lösen.

jenseits von captchas haben funktioniert:
1xtokens einbauen, so dass der spambot das form abholen und session cookies vorweisen muss.

individuelle filter: bbcode, links in feldern, die keine links enthalten sollten, stopworte.

Dadurch kann man

folglich das Bild gut lesbar machen für den Menschen oder es
ganz in normalem Text umsetzen.

Wäre ich mir nicht so sicher, der Bot könnte auch ein eval()
ausführen.

Naja, spätestens wenn du 12 plus 7 hinschreibst ist eval() hinfällig.

Beispiel: Du hast ein Feld Name und in dein Captcha-Feld soll
der Benutzer den ersten und den letzten Buchstaben seines
Namen eintragen.

Das kam mir auch schon in den Sinn jedoch braucht es dazu auch
kein Captcha mehr, sondern kann die Fragen in einem Array
speichern, welche per Zufall ausgewählt werden und Bezug auf
die Eingaben nehmen, wie in deinem Beispiel angeführt.

Genau, der Trick ist, dem Benutzer möglichst einfach umzusetzende Anweisungen zu geben. Durch das mangelnde Verständnis des Sachinhaltes sperrst du zuverlässig jeden Bot aus.

Oder: Du schreibst einen Satz hin und forderst deinen Benutzer
auf, das zweite Wort des Satzes abzutippen.

Hier habe ich bedenken, es darf kein Kunde abspringen, ich
hatte schon mal etwas, aus meiner Ansicht, als idiotensicher
implementiert -> es finden sich immer zwei, die trotzdem das
nicht verstehen.

Naja, lesen müssen die Leute schon können. Du musst den Benutzer eben sehr deutlich darauf hinweisen, dass er diese Frage noch nicht (richtig) beantwortet hat.

Wie schon erwähnt eine zeitliche Prüfung halte ich nicht für
sinnvoll, eine sonstige Prüfung im Bezug SessionID im
hidden-Feld zu Bot, fällt mir spontan auch keine ein. Ne Idee?

Naja, man könnte die gängigen Session-hijacking-Mechanismen anwenden, etwa „hat sich der Browserstring geändert“ oder „Ist der Browserstring überhaupt gültig?“ oder „kommt die IP aus einem deutschsprachigen Land“.

Das alles birgt natürlich IMMER die Gefahr, dass du auch richtige Nutzer aussperrst, aber da muss man das Spamaufkommen gegen das Risiko dem Nutzer gegenüber abwägen.

Am sichersten ist es am Ende doch immer, basierend auf dem Captcha zu entscheiden, ob ein Formular unverzüglich verarbeitet wird und alle anderen trotzdem zu speichern, um sie einmal pro Woche zu sichten. Das geht natürlich nur, solange sich das in einen beherrschbaren Ausmaß bewegt.

Ist mir gerade in die Hände gefallen.

http://heise.de/-2617971

Versteh ich nicht! Was hat das mit meiner Frage zu tun?

Versteh ich nicht! Was hat das mit meiner Frage zu tun?

Ist doch nice to know, dass an Algorithmen geforscht wird, um derlei automatisiert zu filtern. Passt doch thematisch grundsätzlich zu deinem Anliegen, automatisiert Spam von Kunde zu unterscheiden.

Dachte ich mir so.

Robert