Ich habe ein Website-E-Mail-Formular. Ich verwende ein benutzerdefiniertes CAPTCHA, um Spam von Robotern zu verhindern. Trotzdem bekomme ich immer noch Spam.
Warum? Wie schlagen Roboter das CAPTCHA? Verwenden sie eine Art fortschrittliche OCR oder beziehen sie die Lösung nur von dem Ort, an dem sie gespeichert ist?
Wie kann ich das verhindern? Sollte ich zu einem anderen CAPTCHA-Typ wechseln?
Ich bin sicher, dass die E-Mails aus dem Formular stammen, da sie von meinem E-Mail-Absender gesendet werden, der die Formularnachrichten versendet. Auch der Buchstabenstil ist der gleiche.
Ich verwende PHP + MySQL, suche aber keine Lösung für dieses Problem. Ich war an der allgemeinen Situation interessiert, wie die Roboter diese Technologien schlagen. Ich habe diese Situation nur als Beispiel genannt, damit Sie besser verstehen können, worum es mir geht.
Antworten:
Zwei einfachste Wege, um durch CAPTCHA zu kommen:
Verwenden Sie menschliche Farmen, dh fordern Sie Leute auf, CAPTCHAs gegen Geld auszufüllen, genau wie es ProTypers tut.
Verwenden Sie eine Texterkennung.
Möglicherweise liegt auch ein Fehler im CAPTCHA-Mechanismus selbst oder in der umgebenden Anwendung vor, der es jemandem ermöglicht, das CAPTCHA zu umgehen.
Übrigens erklärt der W3C-Artikel Inaccessibility of CAPTCHA: Alternativen zu Visual Turing-Tests im Web auch, wie CAPTCHAs kompromittiert werden könnten:
Wie können Sie diese Angriffe verhindern?
Wenn Sie Ihr benutzerdefiniertes CAPTCHA implementiert haben, können Sie versuchen, zu einem populären wie reCAPTCHA zu wechseln .
Dies hilft, wenn entweder Ihr eigenes CAPTCHA für die Texterkennung zu einfach war oder wenn ein Fehler aufgetreten ist, der erfolgreich ausgenutzt wurde.
Wenn Sie einen gängigen CAPTCHA-Mechanismus verwenden, können Sie OCR verhindern, wenn Sie zu einem benutzerdefinierten oder einem anderen gängigen wechseln.
Technisch gesehen würde nichts menschliche Farmen davon abhalten: Sie können animierte GIFs erstellen, in denen mehrere Frames sehr schnell unterschiedlichen Text anzeigen und nur ein Frame für den Benutzer sichtbar ist. Sie können Text in alle Richtungen verzerren oder verbiegen oder neue, alternative Möglichkeiten finden, dies zu verhindern OCRs, die Text erkennen, werden von Menschen, die noch für das Lösen von CAPTCHAs bezahlt wurden, erfolgreich gelöst.
Möglicherweise möchten Sie von Visual CAPTCHA zu Sound wechseln (wenn Sie nicht bereits beides verwenden und dies auch tun sollten). Dies bedeutet jedoch, dass Benutzer mit Hörbehinderung Ihre Anwendung nicht verwenden können.
FrustratedWithFormsDesigner und GalacticCowboy haben in den Kommentaren domänenspezifische CAPTCHAs erwähnt. Ich habe versucht, Material darüber zu finden, wie effektiv diese sind, aber ohne Erfolg. Hier ist nur meine persönliche Meinung:
Domain-spezifische CAPTCHAs können sehr ärgerlich sein, wenn tatsächliche Benutzer keine Ahnung von der Antwort haben.
Beispiel: Ich besuche eine Seite auf einer filmarientierten Website. Ich stelle einen Fehler in einem Artikel fest und möchte ihn kommentieren, um den Autor über den Fehler zu informieren. In dem Kommentarformular werde ich als CAPTCHAs-Mechanismus aufgefordert, den Namen der Schauspielerin anzugeben, die auf einem Foto angezeigt wird. Ich habe keine Ahnung, wer diese Schauspielerin ist. Das einzige, was ich tun kann, ist, die Website zu verlassen (oder die nächsten zwei Minuten mit Google Images zu verbringen).
Ein weiteres Beispiel: Eine Website fragt nach einem Synonym für "mysteriös". So einfach es sich für eine nicht eingeschränkte Person anhört, die fließend Englisch spricht, ist es ohne externe Hilfe für Personen, die nicht gut Englisch sprechen oder Menschen mit Entwicklungsstörungen, unmöglich zu lösen immer knifflig.
Die meisten dieser domänenspezifischen Probleme können programmgesteuert gelöst werden. Beide Beispiele, die ich gegeben habe, lassen sich leicht mit externen Ressourcen (Wörterbuch für Google Bilder und Synonyme) lösen. Das Beispiel für Transistoren von FrustratedWithFormsDesigner ist besser, lässt sich aber wahrscheinlich mit einem maßgeschneiderten Bot lösen.
Keiner widersteht menschlichen Farmen.
Entweder generieren sie Daten, genau wie gewöhnlicher Text. CAPTCHAs zeichnen verzerrte Zeichen. In diesem Fall kann der Generierungsalgorithmus selbst zum Optimieren der Bots ausgenutzt werden, oder sie finden Daten irgendwo, genau wie reCAPTCHA Text aus gescannten Büchern entnimmt. In diesem Fall kann der Bot dies Verwenden Sie diese Daten dagegen (wenn Sie beispielsweise Wörter aus einem Wörterbuch entnehmen und den Benutzer um die Angabe von Synonymen bitten, kann der Bot dasselbe Wörterbuch verwenden, um einen 100% igen Erfolg zu erzielen).
quelle
Zur Antwort von MainMa hinzufügen ...
Spammer verleiten andere dazu, das CAPTCHA für sie zu machen
Grundsätzlich richten Spammer eine Warez-Site oder eine Porno-Site ein, auf der ein CAPTCHA zu sein scheint, aber es ist kein echtes CAPTCHA. Ein Bot zieht das CAPTCHA von der Site, die er als Spam versenden (oder anderweitig ausnutzen) möchte, und zeigt es dann auf der Warez-Site oder einer Porno-Site an, auf der jemand es für sie fertigstellt. Dann wird der CAPTCHA-Wert an ihren Bot zurückgegeben ...
Ein bisschen mehr über Spammer
Ich benutze reCAPTCHA und habe festgestellt, dass es im Grunde genommen wertlos ist. Ich verwende auch einen benutzerdefinierten Spamfilter, der den Spam auffängt, der nach reCAPTCHA eingegangen ist, und ich muss ihn alle paar Tage auf falsch positive Ergebnisse überprüfen.
Mein Forum ist auch alle benutzerdefiniert geschrieben und es wird sehr wenig Verkehr. Ich glaube nicht, dass jemand einen bestimmten Angriff auf meine Website programmiert hat. Trotzdem fängt mein Spam-Filter täglich 2.000 Spam-Nachrichten ab! Keine werden jemals auf der Site angezeigt. Spammer profitieren nicht davon, mich zu spammen, aber sie tun es trotzdem.
Ich kann Muster in den Spam-Versuchen sehen, weil ich alles protokolliere. Ich kann Ihnen Folgendes sagen: Abgesehen davon, wie sie am CAPTCHA vorbeikommen, verwenden Spammer eindeutig eine Brute-Force-Technik, die die ausgefüllten Felder und die Art der Daten- und Wortmischungen variiert, die diese Felder füllen. Anscheinend tun sie dies so billig (einschließlich der Umgehung des CAPTCHA), dass es sich nicht einmal lohnt, eine Analyse der einzelnen Websites durchzuführen, um festzustellen, ob das, was sie tun, funktioniert oder nicht.
Jahr für Jahr wird meine Website weiterhin mit Tausenden von Spam-Nachrichten pro Tag angesteuert, um jeden Monat eine zu erhalten, und diese wird einen Tag später manuell gelöscht. So billig ist Spam!
Dies wird ein Kampf für die kommenden Jahre sein. Besonders für kleine Ein-Mann-Moderatorenseiten wie meine.
BEARBEITUNG 22.06.2017 : Ich möchte hinzufügen, dass Google reCAPTCHA seit diesem Beitrag komplett überarbeitet hat und zum jetzigen Zeitpunkt einwandfrei funktioniert hat. Obwohl ich vermute, dass es ein bisschen falsches Positives gibt oder es ein Schmerz für die Benutzer ist, da der Beitrag ein bisschen zurückgegangen ist, seit ich ihn implementiert habe. Die 2 großen Veränderungen sind
1) Sie verwenden Bilder anstelle von Text (also keine OCR mehr)
2) Sie kombinieren es mit den Benutzeraktivitäten auf allen Websites, die reCAPTCHA verwenden. Wenn Sie also an reCAPTCHA auf Site A vorbeikommen, gehen Sie zu Site B, und Sie werden möglicherweise nicht einmal aufgefordert, zu beweisen, dass Sie ein Mensch sind! Auch (ich denke), wenn Sie zu viele reCAPTCHAs auf zu vielen Websites treffen, werden Sie ebenfalls darauf hingewiesen. Ich bin sicher, dass es auch andere Arten von KI verwendet, basierend auf der Aktivität des Benutzers.
Ich bin sicher, es ist nur eine Frage der Zeit, bis Spammer dies auch schlagen ...
quelle
Haben Sie schon einmal versucht, Katzenhund-Captcha zu verwenden? Ich habe ein Forum mit Standard-Captcha und habe es geändert. Seitdem habe ich keine Gast-Spam-Mails mehr.
quelle
Es ist möglich, dass Ihre Website von einer ausgenutzten, extrem billigen Belegschaft angegriffen wird und ein Mensch Ihre CAPTCHA-Sätze manuell eingibt.
Wenn die von Ihnen verwendete Lösung nicht übermäßig ausgefeilt ist, führt Ihr Angreifer möglicherweise eine Bilderkennung durch.
Es besteht auch die Möglichkeit, dass Ihr Code irgendwo einen Fehler enthält, durch den das CAPTCHA umgangen werden kann.
Gehen Sie nicht davon aus, dass ein Roboter Ihr CAPTCHA schlägt. Denken Sie ganzheitlich an Ihr System und prüfen Sie, ob es kompromittiert wurde.
quelle
Andere haben diskutiert, wie Spammer CAPTCHAs umgehen. Hier sind einige Tipps, wie ich dies verhindern kann :
Beachten Sie, dass es keine Silberkugel gibt und Spammer dem Spiel einen Schritt voraus zu sein scheinen. Sie müssen also mehrere Techniken kombinieren
quelle
Um die anderen Antworten zu wiederholen, treffen Sie wahrscheinlich auf Bots, die menschliche Farmen verwenden, um die Captchas für sie einzugeben.
Ich habe kürzlich eine Technik besprochen (und ein begleitendes Drupal-Modul veröffentlicht), die Spam-Bots blockiert, indem clientseitiges JavaScript benötigt wird. Soweit mir bekannt ist, hat dies auf allen Sites, die diesen Code verwendet haben, mit 100% iger Effizienz funktioniert. Die Idee ist, AJAX zu verwenden, um einen eindeutigen Hash zu generieren und zusammen mit den anderen Formulardaten zu senden, und dann denselben Hash im Backend zu berechnen, sobald das Formular gesendet wurde, und die beiden Werte zu vergleichen.
Vollständige Details in meinem Blog-Beitrag (da Sie zufällig PHP + MySQL erwähnt haben, handelt es sich um dieselben Technologien, die dort beschrieben wurden) - Modul-Release: Badbot; Spam wird beseitigt ...
quelle
Handelt es sich bei Ihrer Website um Twitter, und jemand hat es gezielt (anstatt dass ein Bot es findet), können Sie aufhören zu lesen ...
Andernfalls könnte es sich lohnen, Ihr Formular NICHT wie ein Formular aussehen zu lassen. 1. Keine Felder mit "E-Mail" in Typ, Name oder Platzhalter, verwenden Sie kurze oder irreführende Namen für alle Felder. 2. Verwenden Sie kein tatsächliches HTML-Formularelement und keine Senden-Schaltfläche. Verwenden Sie lieber AJAX, um es auf das Klicken einer normalen Div zu posten (so gestaltet, dass es wie eine Schaltfläche aussieht). 3. Platzieren Sie das Ereignis onclick nicht in HTML, sondern fügen Sie einen Listener in JavaScript hinzu. 4. Verwenden Sie JavaScript, um alle Tipps auszufüllen: "Geben Sie Ihre E-Mail-Adresse hier ein", da Bots beim Trawlen von Seiten möglicherweise keine JS auslösen (bei diesem nicht sicher, aber ich tue es trotzdem).
quelle