Spam unterbinden

rellek

relativ sensationell
Teammitglied
Hallöchen,

ich überlege mir grade, wie man es denn technisch umsetzen könnte, dass es Bots möglichst schwer haben, Spam (z.B. Kommentare) abzusetzen, aber gleichzeitig Benutzer nicht zu sehr genervt werden.

Wir schwebt da sowas in der Art vor...
- Formularfelder haben zufällige Namen (E-Mail hat beim ersten Aufruf etwa den Namen "kdfh87jkhkjfhd", beim zweiten "jkfdhvkj7867jhfdsjkh" oder so)
- Im Hidden-Feld steht ein Hash drin, der in der DB den Zufall entwirrt
- Jedes Feld wird auf Richtigkeit geprüft (beispielsweise E-Mail-Adressen)

Das wäre dann in etwa so, dass sich das System bei jedem Aufruf eines Formulars eine Konstellation ausdenkt und der Hash, der gebraucht wird, aus irgendeiner ID und dem Zeitpunkt besteht, zu dem das Formular generiert wurde. Nachdem das Formular abgeschickt wurde, verfällt dieser Zusammenhang.

Da die ID ja unbekannt ist (und technisch gar nicht gebraucht wird, eigentlich), ist ein Formular also nur genau einmal gültig.

Ich stelle mir grade vor, dass das ziemlich wasserdicht sein müsste, bin mir nur grad nicht ganz sicher, ob das mit der Performance so eine gute Idee ist. Denn normalerweise hätte ich alles cachen wollen (Content z.B.), aber für diese Technologie wegen Spam wärs notwendig, pro Formularaufruf (bei Weblogs wäre das ja in etwa jede Seite, wegen Kommentarfeld) ein Query abzufeuern, was dann den Cache-Vorteil wieder auffressen würde.

Andererseits wärs dann pro Content-Seite auch nur ein zweiter Query (der erste wär für die Kommentare an sich), was wiederrum wenig wäre.

Gibts zu der Idee evtl. Meinungen? Liege ich falsch mit meiner Vorstellung?
 
G

GameR

Guest
Jede andere Methode, als deine, wäre in PHP rechen intensiver. Es gibt ja auch eine Funktion, die auch mit der Zeit lernt. (ca. wie ein Volltextsuchindex.)

Deine Lösung reicht da schon, zudem brauchst du nicht unbedingt ein Query, du könntest einfach in der Session einen Hashspeichern, mit demm du dann die Forumlarfelder erneut in einen Hash umwandelst.
 

rellek

relativ sensationell
Teammitglied
Session ist problematisch. Weil die ist irgendwann zuende (15 Minuten beispielsweise) (ausserdem gibts derzeit für Gäste gar keine Session, weil wozu?) und dann wär das Formular ungültig. Das möchte ich UNBEDINGT vermeiden.
 

Tango

Neuer Benutzer
Hallo rellek,

Was genau möchtest du den machen ?

Wie können die Leute überhaupt Posten ? registriert oder wie Gästebücher ?
 

rellek

relativ sensationell
Teammitglied
Sowohl registriert als auch als Gast. Als Gast gibts aber keine Session, weil es für diese nicht relevant ist. Soll keine Gelesenmarkierung o.ä. geben.
 

Tango

Neuer Benutzer
und warum nicht das Standard nehmen ?? Captcha und dann noch einen Frage stellen was von einem Datenbank ausgesucht wird. Wie "Wann war die Wiedervereinigung von Deutschland (als Jahr schreiben)?" oder ähnliches :)
 

rellek

relativ sensationell
Teammitglied
Weil CAPTCHA und was dazugehört den Leuten tierisch auf die Nüsse geht. Ausserdem sind dann alle voll neidisch wenn wir keinen Spam haben trotz keinem CAPTCHA.
 

Titus

Goldmember
von was redest du jetzt? Beiträge absenden oder Registrierung allgemein

bei Registrierungen benutzen die Bots meines Wissens nach das vorhandene Formular (deine Idee läuft also brachial ins leere), egal wie du es also drehst, das alte frage-antwort Spiel ist am effektivsten
 

rellek

relativ sensationell
Teammitglied
Ich meine jedes Formular im Frontend (also womit ein User in Kontakt kommt).

Bist du dir mit dem vorhandenen Formular sicher? Schickt der nicht einfach eine GET oder POST-Abfrage an den Server? Woher soll der bei unklaren Namen wissen, was er ausfüllen muss?
 

Tango

Neuer Benutzer
wie währes den mit dem IP's ??

IP speichern und Zeitintervall zwischen 2 Einträgen setzen, bzw. Doppelpost unterbinden.
 

rellek

relativ sensationell
Teammitglied
Spam-Bots sind oft aus Botnetzen, die haben wenns sein muss in einer Sekunde 100 IPs (und 100 Spam-Einträge in der Sekunde) - das würde nichts helfen.
 

Tango

Neuer Benutzer
Spam ist in meinen Augen alle Komentare die nichts mit dem Eigendeichen Thema Zutun hat, Also wer Spammen möchte wird immer spammen egal in welche Art und weise.
Also soll jetzt die Beiträge nach Inhalt nicht überprüft werden ? oder am besten beides zusammen ?
 

rellek

relativ sensationell
Teammitglied
Menschlichen Spam wird man nicht unterbinden können. Aber um so zu nerven, wie es Viagra-Werbung im Mail-Fach oder in Weblogs es tut, muss es eine Maschine machen. Sonst wäre das viel zu viel Aufwand für viel zu wenig Nutzen.
 

rellek

relativ sensationell
Teammitglied
Das ist beides ein recht alter Hut.

Zugegebenermassen ists nicht sehr wahrscheinlich, dass das eintrifft, aber würde man etwa mit Lynx surfen, würde man ein Dummy-Feld sehen.

Meine Lösung, so sie denn wasserdicht ist (s. erster Post), würde das elegant lösen. Die Frage ist nur, ob es denn soweit sicher ist. Und wie man sich um die SQL-Abfrage drücken kann.

Dann wäre das nämlich eine absolut elegante Lösung dann...
 

Tango

Neuer Benutzer
zu deinen 1. Post werde mir mal da was überlegen, mich würde auch so was interessieren.
zu deinen letzten Post , wie viel Nutzer benutzen Unix Syteme ? davon wie viel Prozent benutzen Lynx als Browser?

Aber wie du schon sagtest der erste Post scheint wirklich eleganter zu sein.
 

Zollern

Member
Also ich weiß ja nicht, wie intelligent Bots sind. Aber wenn ich als Botprogrammierer möglichst viele Formulare abdecken möchte, ließe ich meine Bots mir solche Formulare zeigen, die auszufüllen sie nicht in der Lage sind. Dort gebe ich dann vor, wie das alles ausgefüllt werden soll und schon ist ein captcha-freies Webformular umgangen.

Aber vielleicht machen sich die Leute hinter Bots gar nicht so einen Stress, keine Ahnung.
 

rellek

relativ sensationell
Teammitglied
Tango' schrieb:
zu deinen letzten Post , wie viel Nutzer benutzen Unix Syteme ? davon wie viel Prozent benutzen Lynx als Browser?
Es geht an der Stelle _wirklich_ mal um die eleganteste Lösung. Nicht darum, wie relevant irgendwelche Randbedingungen für die Praxis sind.

Bei dem zusätzlichen Feld besteht zudem das Problem, dass sie sichtbar werden, wenn ein User CSS abschaltet, oder die CSS-Datei aus einem anderen Grund nicht geladen wird. Dazu kommt, dass es kein so grosser Aufwand ist, eine Ausnahme zu schreiben, wenn mans wirklich drauf anlegt. Insgesamt ists eher nur ein Workaround. Die Lösung s. erster Post umgeht so gut wie alle Probleme, die sich für den Endanwender auftun könnten (Ausnahmen einprogrammieren geht nicht, weil nicht vorhersehbar ist, wie das Formularfeld heissen wird; es sei denn es wird das Formular vorher heruntergeladen und geparst - da aber kein Feld "email" oder "url" heissen wird, dürfte das für Spammer eher uninteressant sein). Denn ausser, dass die Namen der Formularfelder seltsam sind, ist da nichts, was nicht hingehört.
 

Chance

Member
Ich benutze die erste Möglichkeit, mit dem Formularnamen, mit Query, und an WIO gekoppelt, und die möglichkeit mit dem verstecken Formularfeld mit lockenden Namen.
 

Titus

Goldmember
rellek' schrieb:
Bist du dir mit dem vorhandenen Formular sicher? Schickt der nicht einfach eine GET oder POST-Abfrage an den Server? Woher soll der bei unklaren Namen wissen, was er ausfüllen muss?
ziemlich - immerhin geht ja eine bottrap (als hack) fürs vB genau darauf los ein hidden feld mit timestamp einzufügen und bei unterschreitung von x sec bearbeitungszeit wird abgelehnt

das einzige feld das wirklich ein problem für den bot wäre ist das emailfeld (also wenn man willkürliche Feldnamen nimmt), da man dieses validieren kann, sonst wird das skript einfach verscheidene einstellungsoptionen durchprobieren
außerdem könnte das Skript die reihenfolge einfach aus den formularaufbau ableiten und entsprechend ausfüllen, gerade bei einsatz von ajax könnte man die felder an den verknüpften funktionen erkennen im quelltext wäre es hingehen ebenfalls möglich dieses zu identifizieren, der echte Benutzer muss das ja auch können

gerade bei Spamaccounts kann man immer schön sehen das optionale oder Pflichtfelder mit zahlen oder Buchstaben ausgefüllt sind, was ebenfalls dafür spricht das die meisten Bots das Standardformular benutzen

außerdem ist eine sichere Lösung eine individuell erstellte, da sobald es genug Anwender einer Lösung gibt wird sich ein Botschreiber der Sache annehmen
 
Oben