Frage

Es sieht so aus, als würden wir etwas hinzufügen CAPTCHA Unterstützung für Stack Overflow.Dies ist notwendig, um Bots, Spammer und andere böswillige Skriptaktivitäten zu verhindern.Wir möchten nur, dass Menschen hier Dinge posten oder bearbeiten!

Als erste Verteidigungslinie verwenden wir ein JavaScript-CAPTCHA (jQuery):

http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs

Der Vorteil dieses Ansatzes besteht darin, dass Für die meisten Menschen wird das CAPTCHA nie sichtbar sein!

Für Leute mit deaktiviertem JavaScript benötigen wir jedoch immer noch einen Fallback, und hier wird es schwierig.

Ich habe ein geschrieben traditionelle CAPTCHA-Steuerung für ASP.NET die wir wiederverwenden können.

CaptchaImage

Ich würde jedoch lieber etwas Textbasiertes verwenden, um den Aufwand zu vermeiden, der durch die Erstellung all dieser Bilder auf dem Server bei jeder Anfrage entsteht.

Ich habe Dinge gesehen wie...

  • ASCII-Text-Captcha: \/\/(_)\/\/
  • Mathe-Rätsel:Was ist 7 minus 3 mal 2?
  • Trivia-Fragen:Was schmeckt besser, eine Kröte oder ein Eis am Stiel?

Vielleicht wehre ich mich hier nur gegen Windmühlen, aber ich hätte gerne eine weniger ressourcenintensive Version, die nicht auf Bildern basiert <noscript> kompatibles CAPTCHA wenn möglich.

Ideen?

War es hilfreich?

Lösung

Eine Methode, die ich entwickelt habe und was perfekt zu funktionieren scheint (obwohl ich wahrscheinlich nicht so viel Kommentar-Spam bekomme wie Sie), besteht darin, ein verstecktes Feld zu haben und es mit einem falschen Wert zu füllen, z. B.:

<input type="hidden" name="antispam" value="lalalala" />

Ich habe dann ein Stück JavaScript, das den Wert jede Sekunde mit der Anzahl der Sekunden aktualisiert, die die Seite geladen wurde:

var antiSpam = function() {
        if (document.getElementById("antiSpam")) {
                a = document.getElementById("antiSpam");
                if (isNaN(a.value) == true) {
                        a.value = 0;
                } else {
                        a.value = parseInt(a.value) + 1;
                }
        }
        setTimeout("antiSpam()", 1000);
}

antiSpam();

Wenn das Formular dann abgeschickt wird und der Antispam-Wert immer noch „lalalala“ lautet, markiere ich es als Spam.Wenn der Antispam-Wert eine Ganzzahl ist, überprüfe ich, ob er über etwa 10 (Sekunden) liegt.Wenn es unter 10 liegt, markiere ich es als Spam, wenn es 10 oder mehr ist, lasse ich es durch.

If AntiSpam = A Integer
    If AntiSpam >= 10
        Comment = Approved
    Else
        Comment = Spam
Else
    Comment = Spam

Die Theorie lautet:

  • Ein Spam-Bot unterstützt kein JavaScript und übermittelt, was er sieht
  • Wenn der Bot JavaScript unterstützt, sendet er das Formular sofort ab
  • Der Kommentator hat vor dem Posten zumindest einen Teil der Seite gelesen

Der Nachteil dieser Methode besteht darin, dass sie JavaScript erfordert. Wenn Sie JavaScript nicht aktiviert haben, wird Ihr Kommentar als Spam markiert. Ich überprüfe jedoch als Spam markierte Kommentare, sodass dies kein Problem darstellt.

Antwort auf Kommentare

@MrAnalogy:Der serverseitige Ansatz klingt nach einer recht guten Idee und ist genau das Gleiche wie die Vorgehensweise in JavaScript.Guter Anruf.

@AviD:Ich bin mir bewusst, dass diese Methode, wie ich bereits erwähnt habe, anfällig für direkte Angriffe ist mein Blog.Allerdings verteidigt es sich gegen den durchschnittlichen Spam-Bot, der blindlings Müll an jede Form sendet, die er finden kann.

Andere Tipps

Was ist falsch an der Verwendung, es sei denn, ich übersehe etwas reCaptcha da die gesamte Arbeit extern erledigt wird.

Nur ein Gedanke.

Der Vorteil dieses Ansatzes besteht darin, dass für die meisten Menschen Das CAPTCHA wird niemals sichtbar sein!

Diese Idee gefällt mir. Gibt es nicht eine Möglichkeit, uns einfach in das Repräsentantensystem einzuklinken?Ich meine, jeder mit etwa +100 Wiederholungen ist wahrscheinlich ein Mensch.Wenn sie also einen Repräsentanten haben, müssen Sie sich nicht einmal die Mühe machen, irgendetwas in Bezug auf CAPTCHA zu tun.

Wenn dies nicht der Fall ist, senden Sie es. Ich bin mir sicher, dass nicht so viele Beiträge erforderlich sind, um 100 zu erreichen, und die Community wird sich sofort auf jeden stürzen, der scheinbar mit anstößigen Tags spammt. Warum also nicht einen Link „Spam melden“ hinzufügen? das Downmods um 200?Hol dir 3 davon, Spambot-Erfolg freigeschaltet, tschüss ;)

BEARBEITEN:Ich sollte auch hinzufügen, dass mir die mathematische Idee für das Nicht-Bild-CAPTCHA gefällt.Oder vielleicht ein einfach Rätselartiges Ding.Kann das Posten noch interessanter machen ^_^

Was ist mit Honeypot-Captcha?

Vermeide den schlechteste CAPTCHAs aller Zeiten.

Trivia ist in Ordnung, aber Sie müssen jedes davon aufschreiben :-(

Jemand müsste sie schreiben.

Sie könnten Trivia-Fragen auf die gleiche Art und Weise stellen wie ReCaptcha gedruckte Wörter.Es bietet zwei Wörter an, von denen es auf eines die Antwort kennt, auf ein anderes jedoch nicht – nachdem es auf das zweite Wort genügend Antworten gegeben hat, weiß es nun auch darauf die Antwort.Stellen Sie zwei Quizfragen:

Eine Frau braucht einen Mann wie ein Fisch einen?

Orange-Orange-Orange.Geben Sie Grün ein.

Natürlich muss dies möglicherweise mit anderen Techniken gekoppelt werden, beispielsweise mit Timern oder berechneten Geheimnissen.Die Fragen müssten rotiert bzw. zurückgezogen werden. Um den Vorrat an Fragen aufrechtzuerhalten, könnten Sie also ad hoc Folgendes hinzufügen:

Geben Sie Ihre offensichtliche Frage ein:

Sie brauchen nicht einmal eine Antwort;andere Menschen werden das für dich herausfinden.Möglicherweise müssen Sie zulassen, dass Fragen wie diese als „zu schwer“ gekennzeichnet werden:„asdf ejflf asl;jf ei;fil;asfas“.

Um nun jemanden zu verlangsamen, der einen StackOverflow-Gaming-Bot ausführt, würden Sie die Fragen nach IP-Adresse rotieren, sodass dieselbe IP-Adresse erst dann dieselbe Frage erhält alle Die Fragen sind erschöpft.Dies verlangsamt den Aufbau eines Wörterbuchs bekannter Fragen und zwingt den menschlichen Besitzer der Bots, alle Ihre Quizfragen zu beantworten.

Ich habe das einmal auf der Website eines Freundes gesehen.Er verkauft es für 20 Dollar.Es ist ASCII-Kunst!

http://thephppro.com/products/captcha/

  .oooooo.         oooooooo 
 d8P'  `Y8b       dP""""""" 
888      888     d88888b.   
888      888 V       `Y88b '
888      888           ]88  
`88b    d88'     o.   .88P  
 `Y8bood8P'      `8bd88P'   

CAPTCHA ist in seiner aktuellen Konzeptualisierung fehlerhaft und kann oft leicht umgangen werden.KEINE der vorhandenen Lösungen funktioniert effektiv – GMail ist bestenfalls in 20 % der Fälle erfolgreich.

Es ist tatsächlich viel schlimmer, da diese Statistik nur OCR verwendet und es andere Möglichkeiten gibt, dies zu umgehen – zum Beispiel CAPTCHA-Proxys und CAPTCHA-Farmen.Ich habe kürzlich bei OWASP einen Vortrag zu diesem Thema gehalten, aber die ppt ist noch nicht online ...

Obwohl CAPTCHA in keiner Form einen echten Schutz bieten kann, kann es für Ihre Bedürfnisse ausreichen, wenn Sie gelegentlich vorbeifahrenden Müll blockieren möchten.Aber es wird nicht einmal halbprofessionelle Spammer aufhalten.

Normalerweise benötigen Sie für eine Site, deren Ressourcen wertvoll sind und die es zu schützen gilt, einen dreistufigen Ansatz:

  • Beschränken Sie Antworten nur von authentifizierten Benutzern und verbieten Sie anonyme Beiträge.
  • Minimieren (nicht verhindern) Sie die wenigen Müllbeiträge von authentifizierten Benutzern – z. B.Reputationsbasiert.Hier kann auch ein menschlicher Moderator helfen, aber dann hat man andere Probleme – nämlich den Moderator zu überfluten (oder sogar zu ertränken), und manche Seiten bevorzugen die Offenheit …
  • Verwenden Sie serverseitige heuristische Logik, um Spam-ähnliches Verhalten oder besser nicht menschenähnliches Verhalten zu identifizieren.

CAPTCHA kann mit dem zweiten Zweig ein KLEINES bisschen helfen, einfach weil es die Wirtschaftlichkeit verändert – wenn die anderen Zweige vorhanden sind, lohnt es sich nicht mehr, sich die Mühe zu machen, das CAPTCHA zu durchbrechen (minimale Kosten, aber immer noch Kosten), um damit erfolgreich zu sein eine kleine Menge Spam.

Auch hier gilt: Nicht Ihr gesamter Spam (und anderer Müll) wird computergeneriert sein – mit CAPTCHA-Proxy oder einer Farm können die Bösewichte echte Leute dazu bringen, Sie zu spammen.


Bei einem CAPTCHA-Proxy handelt es sich um die Bereitstellung Ihres Bildes für Benutzer anderer Websites, z. B.Pornos, Spiele usw.

Eine CAPTCHA-Farm hat viele billige Arbeitskräfte (Indien, Fernost usw.), die sie lösen ...typischerweise zwischen 2-4$ pro 1000 gelösten Captchas.Ich habe kürzlich einen Beitrag dazu auf Ebay gesehen...

Captcha ist also für alle Benutzer außer Moderatoren obligatorisch. [1]

Das ist unglaublich dumm.Es wird also Benutzer geben, die das können Bearbeiten Sie jeden Beitrag auf der Website aber nicht ohne CAPTCHA posten?Wenn Sie genug Repräsentanten haben, um Beiträge abzulehnen, haben Sie auch genug Repräsentanten, um Beiträge ohne CAPTCHA zu posten.Stellen Sie den Wert bei Bedarf höher ein.Außerdem gibt es zahlreiche Methoden zur Spam-Erkennung, die Sie auch ohne Bilderkennung einsetzen können, so dass es auch für nicht registrierte Benutzer nie nötig wäre, diese gottverlassenen CAPTCHA-Formulare auszufüllen.

Stellen Sie sicher, dass es nichts ist Google kann antworten obwohl.Was auch ein Problem mit dieser --Reihenfolge der Operationen zeigt!

Wie wäre es, die Community selbst zu nutzen, um noch einmal zu überprüfen, ob jeder hier ein Mensch ist, d. h.so etwas wie ein Netz des Vertrauens?Um einen zu finden wirklich vertrauenswürdig Ich schlage vor, dieses CAPTCHA zu verwenden, um sicherzustellen, dass es sich bei der Person, die das Web startet, absolut und zu 100 % um einen Menschen handelt.

Rapidshare CAPTCHA – Riemann-Hypothese http://codethief.eu/kram/_/rapidshare_captcha2.jpg

Sicherlich besteht eine kleine Chance, dass er zu sehr mit der Vorbereitung seiner Rede zur Fields-Medaille beschäftigt wäre, um uns beim Aufbau des Vertrauensnetzes zu helfen, aber nun ja ...

Asirra ist das bezauberndste Captcha aller Zeiten.

Lassen Sie den Benutzer einfach einfache arithmetische Ausdrücke lösen:

2 * 5 + 1
2 + 4 - 2
2 - 2 * 3

usw.

Sobald sich Spammer durchsetzen, sollte es ziemlich einfach sein, sie zu erkennen.Wechseln Sie bei jeder Anfrage eines erkannten Spammers zwischen den folgenden beiden Befehlen:

import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby

Der Grund dafür, dass dies funktioniert, liegt offensichtlich darin, dass alle Spammer clever genug sind, es zu nutzen eval um das Captcha in einer Codezeile zu lösen.

Ich habe die folgende einfache Technik verwendet, sie ist nicht narrensicher.Wenn jemand dies wirklich umgehen möchte, kann er sich einfach die Quelle ansehen (d. h.nicht für das Google CAPTCHA geeignet), sollte aber die meisten Bots täuschen.

Fügen Sie zwei oder mehr Formularfelder wie folgt hinzu:

<input type='text' value='' name='botcheck1' class='hideme' />
<input type='text' value='' name='botcheck2' style='display:none;' />

Verwenden Sie dann CSS, um sie auszublenden:

.hideme {
    display: none;
}

Überprüfen Sie beim Absenden, ob diese Formularfelder Daten enthalten, falls sie beim Senden des Formulars fehlschlagen.Der Grund dafür ist, dass Bots den HTML-Code lesen und versuchen, jedes Formularfeld auszufüllen, während Menschen die Eingabefelder nicht sehen und sie in Ruhe lassen.

Es gibt natürlich noch viele weitere Dinge, die Sie tun können, um die Ausnutzbarkeit zu verringern, aber das ist nur ein grundlegendes Konzept.

Obwohl wir alle sollen Wenn Sie grundlegende Mathematikkenntnisse haben, könnte das Mathe-Rätsel einige Verwirrung stiften.Ich bin mir sicher, dass einige Leute in Ihrem Beispiel mit „8“ statt mit „1“ antworten würden.

Wäre eine einfache Textfolge mit zufälligen, fett oder kursiv hervorgehobenen Zeichen geeignet?Der Benutzer muss lediglich die fett/kursiv gedruckten Buchstaben als CAPTCHA eingeben.

Z.B. SsdfaTwerweAjhCtraurigkoghvefdhrffghlfgdhowfgh

In diesem Fall wäre „Stack“ das CAPTCHA.Es gibt offensichtlich zahlreiche Variationen dieser Idee.

Bearbeiten:Beispielvarianten zur Lösung einiger potenzieller Probleme, die mit dieser Idee identifiziert wurden:

  • Verwenden Sie zufällig gefärbte Buchstaben anstelle von Fett-/Kursivschrift.
  • Verwendung jedes zweiten roten Buchstabens für das CAPTCHA (verringert die Möglichkeit, dass Bots unterschiedlich formatierte Buchstaben identifizieren, um das CAPTCHA zu erraten)

Obwohl dieses ähnliche Diskussion wurde gestartet:

Wir testen diese Lösung in einer unserer häufig datengestützten Anwendungen:

Eine bessere CAPTCHA-Kontrolle (Schau mal, Ma – KEIN BILD!)

Sie können es auf unserer Seite in Aktion sehen Suche nach Bauinspektionen.

Sie können die Quelle anzeigen und sehen, dass das CAPTCHA nur HTML ist.

Ich weiß, dass das niemand lesen wird, aber was ist mit dem Hund oder Katze CAPTCHA?

Sie müssen sagen, wer eine Katze oder ein Hund ist, Maschinen können das nicht.http://research.microsoft.com/asirra/

Ist cool..

Ich verwende nur einfache Fragen, die jeder beantworten kann:

Welche Farbe hat der Himmel?
Welche Farbe hat eine Orange?
Welche Farbe hat Gras?

Dadurch muss jemand einen Bot individuell für Ihre Website programmieren, was den Aufwand wahrscheinlich nicht wert ist.Wenn ja, ändern Sie einfach die Fragen.

Ich persönlich mag CAPTCHA nicht, es schadet der Benutzerfreundlichkeit und löst nicht das Sicherheitsproblem, gültige Benutzer ungültig zu machen.

Ich bevorzuge Methoden zur Bot-Erkennung, die Sie serverseitig durchführen können.Da Sie gültige Benutzer haben (dank OpenID), können Sie diejenigen blockieren, die sich nicht „verhalten“. Sie müssen lediglich die Muster eines Bots identifizieren, sie mit den Mustern eines typischen Benutzers abgleichen und den Unterschied berechnen.

Davies, N., Mehdi, Q., Gough, N.:Erstellen und Visualisieren eines intelligenten NPC mithilfe von Game Engines und KI-Tools http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06.pdf

Golle, P., Ducheneaut, N.:Verhindern, dass Bots Online-Spiele spielen <-- ACM-Portal

Ducheneaut, N., Moore, R.:Die soziale Seite des Gamings:Eine Studie über Interaktionsmuster in einem Massively Multiplayer Online Game

Sicherlich beziehen sich die meisten dieser Verweise auf die Bot-Erkennung in Videospielen, aber das liegt daran, dass dies der Titel des Artikels unserer Gruppe war Roboterkriege:Eine spielinterne Erkundung der Roboteridentifikation.Es wurde nicht veröffentlicht oder so, sondern nur für ein Schulprojekt.Bei Interesse kann ich eine E-Mail senden.Fakt ist jedoch, dass, selbst wenn es auf der Erkennung von Videospiel-Bots basiert, es auf das Web übertragen werden kann, da es einen Benutzer gibt, der an Nutzungsmuster gebunden ist.

Ich stimme der Vorgehensweise von MusiGenesis bei diesem Ansatz zu, da ich sie auf meiner Website verwende und sie recht gut funktioniert.Der unsichtbare CAPTCHA-Prozess ist eine gute Möglichkeit, die meisten Skripte zu blockieren, aber das hindert einen Skriptautor nicht daran, Ihre Methode zurückzuentwickeln und die Werte, nach denen Sie in Javascript suchen, zu „fälschen“.

Ich würde sagen, die beste Methode besteht darin, 1) einen Benutzer einzurichten, damit Sie ihn blockieren können, wenn er schlecht ist, 2) einen Algorithmus zu identifizieren, der typische Muster erkennt vs.untypische Muster der Website-Nutzung und 3) diesen Benutzer entsprechend blockieren.

Ich habe einige Ideen dazu, die ich gerne mit Ihnen teilen möchte ...

Erste Idee, OCR zu vermeiden

Ein Captcha, das einen für den Benutzer verborgenen Teil enthält, das vollständige Bild jedoch aus den beiden Codes zusammen besteht. Daher lesen OCR-Programme und Captcha-Farmen das Bild, das den sichtbaren und den verborgenen Teil enthält, versuchen, beide zu entschlüsseln, und senden es nicht. ..- Ich habe alles bereit, das Problem zu beheben und online zu arbeiten.

http://www.planethost.gr/IdeaWithHiddenPart.gif

Zweite Idee, um es einfacher zu machen

Eine Seite mit vielen Wörtern, aus denen der Mensch das richtige auswählen muss.Ich habe auch dieses erstellt, es ist einfach.Die Wörter sind anklickbare Bilder, und der Benutzer muss auf das richtige klicken.

http://www.planethost.gr/ManyWords.gif

Dritte Idee ohne Bilder

Das Gleiche wie zuvor, jedoch mit Divs und Texten oder kleinen Symbolen.Der Benutzer muss nur auf das richtige Div/Buchstaben/Bild klicken, was auch immer.

http://www.planethost.gr/ArrayFromDivs.gif

Letzte Idee – ich nenne es CicleCaptcha

Und noch eins von mir CicleCaptcha, muss der Benutzer einen Punkt auf einem Bild lokalisieren.Wenn er es findet und darauf klickt, handelt es sich um eine Person, Maschinen versagen wahrscheinlich oder es muss eine neue Software erstellt werden, um einen Weg damit zu finden.

http://www.planethost.gr/CicleCaptcha.gif

Jeder Kritiker ist willkommen.

Bestes Captcha aller Zeiten! Vielleicht brauchen Sie so etwas für die Anmeldung, um den Pöbel fernzuhalten.

Vor kurzem habe ich damit begonnen, ein Tag hinzuzufügen, dessen Name und ID auf „Nachricht“ eingestellt sind.Ich habe es mit CSS auf versteckt gesetzt (display:none).Spam-Bots sehen es, füllen es aus und senden das Formular ab.Serverseitig markiere ich den Beitrag als Spam, wenn der Textbereich mit dem ID-Namen ausgefüllt ist.

Eine andere Technik, an der ich arbeite, ist die zufällige Generierung von Namen und IDs, wobei es sich bei einigen um Spam-Prüfungen und bei anderen um reguläre Felder handelt.

Das funktioniert bei mir sehr gut und ich habe bisher noch keinen erfolgreichen Spam erhalten.Allerdings bekomme ich viel weniger Besucher auf meine Seiten :)

Sehr einfache Arithmetik ist gut.Blinde Menschen werden antworten können.(Aber wie Jarod sagte: Hüten Sie sich vor der Priorität des Operators.) Ich vermute, jemand könnte einen Parser schreiben, aber das macht das Spam teurer.

Ausreichend einfach, und es wird nicht schwierig sein, es zu programmieren.Ich sehe hier zwei Bedrohungen:

  1. zufällige Spambots und die menschlichen Spambots, die sie unterstützen könnten;Und
  2. Bots, die für das Spiel Stack Overflow erstellt wurden

Mit einfacher Arithmetik könnten Sie Bedrohung Nr. 1 besiegen, Bedrohung Nr. 2 jedoch nicht.

Was wäre, wenn Sie eine Kombination der Captcha-Ideen verwenden würden, die Sie hatten (wählen Sie eine davon aus – oder wählen Sie eine davon zufällig aus):

  • ASCII-Text-Captcha://(_)//
  • Mathe-Rätsel:Was ist 7 minus 3 mal 2?
  • Trivia-Fragen:Was schmeckt besser, eine Kröte oder ein Eis am Stiel?

mit dem Zusatz, genau das gleiche Captcha in einem versteckten CSS-Abschnitt der Seite zu platzieren – die Honeypot-Idee.Auf diese Weise hätten Sie eine Stelle, an der Sie die richtige Antwort erwarten würden, und eine andere, an der die Antwort unverändert bleiben sollte.

Mit einem einfachen Feld „Dieses Feld leer lassen:“ habe ich erstaunlich gute Ergebnisse erzielt.Bots scheinen alles auszufüllen, insbesondere wenn Sie dem Feld einen Namen wie „URL“ geben.In Kombination mit einer strengen Referrer-Prüfung habe ich noch keinen Bot erlebt, der daran vorbeigekommen ist.

Bitte vergessen Sie hier nicht die Barrierefreiheit.Captchas sind für viele Menschen, die Screenreader verwenden, bekanntermaßen unbrauchbar.Einfache mathematische Aufgaben oder sehr triviale Trivia (ich mochte die Frage „Welche Farbe hat der Himmel?“) sind für Benutzer mit Sehbehinderung viel freundlicher.

Einfacher Text klingt großartig. Bestechen Sie die Community, damit sie die Arbeit erledigt! Wenn Sie wie ich der Meinung sind, dass SO-Reputationspunkte das Engagement eines Benutzers für den Erfolg der Website messen, ist es völlig vernünftig, Reputationspunkte anzubieten, um die Website vor Spammern zu schützen.

Bieten Sie +10 Reputation für jeden Beitrag zu einer einfachen Frage und einer Reihe richtiger Antworten.Die Frage sollte angemessen weit (Bearbeitungsentfernung) von allen vorhandenen Fragen entfernt sein, und der Ruf (und die Frage) sollten nach und nach verschwinden, wenn die Leute sie nicht beantworten können.Nehmen wir an, wenn die Fehlerquote bei richtigen Antworten mehr als 20 % beträgt, verliert der Einsender einen Reputationspunkt pro falscher Antwort, maximal jedoch 15.Wenn Sie also eine schlechte Frage einreichen, erhalten Sie jetzt +10, aber letztendlich erhalten Sie netto -5.Oder vielleicht ist es sinnvoll, eine Stichprobe von Benutzern zu bitten, darüber abzustimmen, ob die Captcha-Frage gut ist.

Nehmen wir schließlich an, wie bei der täglichen Wiederholungsobergrenze, dass kein Benutzer durch das Einreichen von Captcha-Fragen mehr als 100 Reputationen verdienen kann.Dies ist eine angemessene Einschränkung der Gewichtung solcher Beiträge und kann auch dazu beitragen, Spammer daran zu hindern, Fragen in das System einzuspeisen.Beispielsweise könnten Sie Fragen nicht mit gleicher Wahrscheinlichkeit, sondern mit einer Wahrscheinlichkeit auswählen, die proportional zur Reputation des Einsenders ist.Jon Skeet, bitte stellen Sie keine Fragen :-)

Stellen Sie eine AJAX-Abfrage für eine kryptografische Nonce an den Server.Der Server sendet eine JSON-Antwort mit dem Nonce zurück und setzt außerdem ein Cookie mit dem Nonce-Wert.Berechnen Sie den SHA1-Hash der Nonce in JavaScript und kopieren Sie den Wert in ein verstecktes Feld.Wenn der Benutzer das Formular POSTET, sendet er nun das Cookie mit dem Nonce-Wert zurück.Berechnen Sie den SHA1-Hash der Nonce aus dem Cookie, vergleichen Sie ihn mit dem Wert im ausgeblendeten Feld und stellen Sie sicher, dass Sie diese Nonce in den letzten 15 Minuten generiert haben (memcached eignet sich hierfür).Wenn alle Prüfungen erfolgreich sind, posten Sie den Kommentar.

Diese Technik erfordert, dass sich der Spammer hinsetzt und herausfindet, was vor sich geht, und wenn er das getan hat, muss er immer noch mehrere Anfragen auslösen und den Cookie-Status aufrechterhalten, um einen Kommentar durchzubringen.Außerdem sehen sie immer nur das Set-Cookie Header, wenn sie das JavaScript überhaupt analysieren und ausführen und die AJAX-Anfrage stellen.Das ist weitaus mehr Arbeit, als die meisten Spammer bereit sind, auf sich zu nehmen, insbesondere da sich die Arbeit nur auf eine einzige Website bezieht.Der größte Nachteil besteht darin, dass jeder, der JavaScript deaktiviert oder Cookies deaktiviert hat, als potenzieller Spam markiert wird.Deshalb sind Moderationswarteschlangen immer noch eine gute Idee.

Theoretisch könnte man dies als Sicherheit durch Unklarheit bezeichnen, in der Praxis ist es jedoch hervorragend.

Ich habe noch nie einen Spammer gesehen, der sich die Mühe gemacht hat, diese Technik zu durchbrechen, obwohl ich vielleicht alle paar Monate einen themenbezogenen Spam-Eintrag von Hand eingegeben bekomme, und das ist ein wenig unheimlich.

1) Menschliche Löser

Alle hier genannten Lösungen werden durch den Ansatz menschlicher Löser umgangen.Ein professioneller Spambot hält Hunderte von Verbindungen aufrecht und wenn er CAPTCHA nicht selbst lösen kann, gibt er den Screenshot an entfernte menschliche Löser weiter.

Ich lese häufig, dass menschliche CAPTCHA-Löser gegen Gesetze verstoßen.Nun, dies wurde von denen geschrieben, die nicht wissen, wie diese (Spam-)Branche funktioniert.
Menschliche Löser interagieren nicht direkt mit den Websites, deren CAPTCHAs sie lösen.Sie wissen nicht einmal, von welchen Seiten CAPTCHAs entnommen und versendet wurden.Mir sind Dutzende (wenn nicht Hunderte) Unternehmen und/oder Websites bekannt, die menschliche Lösungsdienste anbieten, aber kein einziges für die direkte Interaktion mit kaputten Boards.
Letztere verstoßen nicht gegen Gesetze, daher ist die Lösung von CAPTCHAs ein völlig legales (und offiziell registriertes) Unternehmen.Sie verfolgen keine kriminellen Absichten und könnten beispielsweise für Ferntests, Untersuchungen, Konzeptprüfungen, Prototyping usw. verwendet worden sein.

2) Kontextbasierter Spam

KI-Bots (künstliche Intelligenz) bestimmen Kontexte und führen kontextsensitive Dialoge zu unterschiedlichen Zeiten von verschiedenen IP-Adressen (aus verschiedenen Ländern) aus.Selbst die Autoren von Blogs verstehen häufig nicht, dass Kommentare von Bots stammen.Ich werde nicht auf viele Details eingehen, aber Bots können zum Beispiel menschliche Dialoge per Webscraping erfassen, sie in einer Datenbank speichern und sie dann einfach wiederverwenden (Satz für Satz), sodass sie weder von Software noch von Menschen als Spam erkannt werden können.

Die am häufigsten gewählte Antwort erzählen:

  • *„Die Theorie besagt:
    • Ein Spam-Bot unterstützt kein JavaScript und übermittelt, was er sieht
    • Wenn der Bot JavaScript unterstützt, sendet er das Formular sofort ab
    • Der Kommentator hat vor dem Posten zumindest einen Teil der Seite gelesen.

sowie Honeypot-Antwort und die meisten Antworten in diesem Thread sind einfach falsch.
Ich wage zu behaupten, dass sie es sind opferorientierte Ansätze

Die meisten Spambots funktionieren über lokale und entfernte Javascript-fähige (gepatchte und verwaltete) Browser von unterschiedlichen IP-Adressen (aus unterschiedlichen Ländern) und sind ziemlich clever, um Honey Traps und Honey Pots zu umgehen.

Das andere Problem besteht darin, dass selbst Blog-Eigentümer häufig nicht erkennen können, dass Kommentare von Bots stammen, da sie tatsächlich aus menschlichen Dialogen und Kommentaren stammen, die aus anderen Web-Boards (Foren, Blog-Kommentare usw.) stammen.

3) Konzeptionell neuer Ansatz

Entschuldigung, ich habe diesen Teil als überstürzten entfernt

Eigentlich könnte es eine Idee sein, ein programmbezogenes Captcha-Set zu haben.Zum Beispiel:

Captcha

Es besteht die Möglichkeit, dass jemand einen Syntaxprüfer entwickelt, um dies zu umgehen, aber es ist viel aufwändiger, ein Captcha zu umgehen.Sie kommen jedoch auf die Idee, ein entsprechendes Captcha zu haben.

Ich muss zugeben, dass ich keine Erfahrung im Kampf gegen Spambots habe und nicht wirklich weiß, wie ausgeklügelt sie sind.Allerdings sehe ich im jQuery-Artikel nichts, was nicht rein auf dem Server erledigt werden könnte.

Um die Zusammenfassung aus dem jQuery-Artikel neu zu formulieren:

  1. Beim Generieren des Kontaktformulars auf dem Server ...
  2. Schnappen Sie sich die aktuelle Zeit.
  3. Kombinieren Sie diesen Zeitstempel und ein geheimes Wort, generieren Sie einen 32-stelligen „Hash“ und speichern Sie ihn als Cookie im Browser des Besuchers.
  4. Speichern Sie den Hash- oder „Token“-Zeitstempel in einem versteckten Formular-Tag.
  5. Wenn das Formular zurückgesendet wird, wird der Wert des Zeitstempels mit dem im Cookie gespeicherten 32-stelligen „Token“ verglichen.
  6. Wenn die Informationen nicht übereinstimmen, fehlen oder der Zeitstempel zu alt ist, stoppen Sie die Ausführung der Anfrage ...

Eine weitere Option, wenn Sie das herkömmliche Bild-CAPTCHA verwenden möchten, ohne den Aufwand, sie bei jeder Anfrage zu generieren, besteht darin, sie offline vorab zu generieren.Dann müssen Sie nur noch eines auswählen, das mit jedem Formular angezeigt werden soll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top