"Wie man phpBB Foren vor Spam Bots schützen kann"

Fragen und Anregungen zum Forum.
Beiträge die Community betreffend
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Bei einem Captcha-Bild weiss der BOT allerdings sofort was er da zu
> tun hat. Egal ob er es schafft oder nicht.

genau das ist es... :D

wenn die rechenaufgabe in einem Captcha-bild steht,
werden 99.99% der bots die aufgabe eingeben, nicht die lösung,
weil sie davon ausgehen, dass sie es mit einem stinknormalen captcha zu tun haben.

da kann man dann das captcha relativ harmlos gestalten,
dass garantiert auch menschen mit sehschwächen damit klarkommen,
weil dass es eine rechenaufgabe ist, erkennt nur ein selbstdenkendes system.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Und dann dauert es nicht mehr lange und die Bots haben noch eine kleine
eval()-Funktion eingebaut.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Dann wird's eben Zeit für moralische Fragen oder Wissensfragen :mrgreen:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

Natuerlich, aber kaum einer programmiert ein BOT nur fuer ein Forum.
Somit waere es, fuer solch einen BOT fast unmoeglich tausende
verschiedene Fragen oder dergleichen zu beantworten.
Genau das meinte ich auch!
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

Hab neulich über einen Erkennungsansatz gelesen, der das Prinzip umkehrt. Es wird nicht mehr eine Leistung geprüft, die nur ein Mensch kann bzw. ein Bot nicht kann, z.B. Mustererkennung. Sondern man prüft ein Verhalten, das nur ein Bot zeigen würde.

Konkretes Beispiel: man baut in das Registrierungsformular ein weiteres Formularfeld für die E-Mailadresse ein, das man aber per CSS unsichtbar macht. Der Bot wird treu und brav alle Formularfelder ausfüllen, auch das eigentlich unsichtbare. Und schon hat man ein Merkmal, das man per Code auswerten kann ...
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

:shock: geil! :allright:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

stbi hat geschrieben:Konkretes Beispiel: man baut in das Registrierungsformular ein weiteres Formularfeld für die E-Mailadresse ein, das man aber per CSS unsichtbar macht. Der Bot wird treu und brav alle Formularfelder ausfüllen, auch das eigentlich unsichtbare. Und schon hat man ein Merkmal, das man per Code auswerten kann ...
Gute Idee, aber dann lasse ich meinen Bot einfach in den Quelltext schauen. Sollte ich feststellen, dass das Feld unsichtbar ist:

Code: Alles auswählen

<div style="visibility:hidden;"><input type="text"></div>
Dann füelle ich es nicht aus. Auf die traditionelle Methode, die es schon sehr lange gibt, fällt auch kein Bot mehr herein, nämolich sofort ein "unsichtbares" Fehld einzubauen:

Code: Alles auswählen

<input type="hidden">
Letzteres ist dazu gedacht, dass man so eine Art unsichtbares Eingabefeld hat, in das schon Informationen vorgegeben sind, z. B. wenn das Formular über ein PHP/CGI Skript generiert wurde.

Unterschied zwischen Code 1 und 2: 1 Versteckt es nachträglich, arbeitet mit CSS wie vorgeschlagen. 2 fügt einfach nur eine Information in das Forumlar ein, die auch von einem Bot nicht geändert wird.

Deine Idee ist also gut, aber leider unbrauchbar. Man müsste den ganzen Ansatz umkehren:

Ich habe mal gelesen, dass ein Bot sich nur dann als "künstliche Intelligenz" bezeichnen darf, wenn ein Mensch (mit verbundenen Augen, nur hörend) nicht unterscheiden kann, ob sein Gesprächspartner ein Bot oder ein Mensch ist. Wie gesagt, man müsste den Ansatz zur Botbekämpfung umdrehen und bei der Registrierung etwas verlangen, was Bots nicht können, beispielsweise Ironie verstehen oder fragen, wie Chili schmeckt oder wie sich ein Teppich anfühlt. Das sind alles Sachen, an denen man sehen kann, ob das gegenüber ein Bot ist (der nicht fühlen kann) oder ein Mensch (der fühlen kann).
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Problem bei diesem Ansatz ist aber, dass man eben keine "Standardfragen" nutzen sollte. Gleichzeitig müssen es aber allgemeingültige sein, um niemanden auszuschließen...
Das würde irgendwann in einem "Sollen hier nur noch Leute hineindürfen, die intelligent genug für die Eingangsfrage sind"-Glaubenskrieg enden.

Ich persönlich tendiere für das unsichtbare Eingabefeld, in Verbindung mit PHP. Wir generieren uns einen zufälligen Namen für unser unsichtbares DIV.Den Zufallsnamen speichern wir zwischen, und produzieren einmal ein CSS, was das DIV mit dem Zufallsnamen unsichtbar färbt. So kann man verhindern, dass sich Bots an die DIV-Namen gewöhnen (DIV Name"Invisi" -> Oh, hier darf ich nix eintragen). Indem man die Invisibility im CSS verbaut, ist auch relativ gesichert, dass die Eigenschaften nicht so leicht ausgelesen werden können.
Zusätzlich könnte man eine JavaScriptfunktion einsetzen (okay, hier werden manche schreien, da Javascript nicht überall aktiv ist, aber da man es nur einmal zur Anmeldung braucht...).Diese Javascriptfunktion macht eigentlich nur folgendes: Sie setzt in das unsichtbare Feld beim Laden des HTMLs einen Wert ein.Eine Art ID.
Da Bots i.d.R. kein Javascript unterstützen (wer will sich schon auf eine Endlosschleife einlassen, und damit den Server lahmlegen?), wird bei einem Bot keine Zahl in dem Feld sein, oder gar eine falsche.

Wie man die Zahlen korrigiert wäre ein anderes Problem, was aber in der Regel mit PHP und einer SessionID gelöst werden kann.

Was haltet ihr von dieser Kombination?

(Nochmal Kurz:
- Div mit Zufallsnamen-> CSS weißt<div name="Zufallsnamen"> unsichtbarkeit zu
- PHP setzt in JavaScript-Funktion irgendeinen Wert ein, der von der Funktion berechnet werden und in das unsichtbare Feld eingetragen werden muss
- PHP Empfängt Ergebnis des unsichtbaren DIVs und vergleicht Inhalt mit dem Inhalt der "drin sein müsste"
)

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

AND51 hat geschrieben:Sollte ich feststellen, dass das Feld unsichtbar ist:

Code: Alles auswählen

<div style="visibility:hidden;"><input type="text"></div>
Dann füelle ich es nicht aus.
1. würde ich CSS-Klassennamen verwenden, die nicht unbedingt den Text hidden beinhalten
2. kann ich auch ein weißes Feld auf weißem Grund machen ( = französische Kriegsflagge :mrgreen: )
3. kann ich das Formularfeld auch außerhalb des sichtbaren Bereichs platzieren
4. kann ich das Formularfeld winzigst klein machen
5. kann ich etwas anderes darüber legen, um es unsichtbar zu machen
6. kann ich mit Javascript zusätzlich Verwirrung stiften
7. kann ich neben das Formularfeld auch einfach hinschreiben, dass es leer bleiben soll

Somit muss ein Bot die komplette HTML-Seite plus CSS plus Javascript laden, evaluieren und die Fallen aufspüren. Da hat er umfangreich was zu tun und muss recht aufwendig programmiert sein ...

Aber um es klar zu stellen, es ist nicht meine eigene Idee, habs nur gelesen, finde aber den Ansatz ganz effektiv.

Die Fragentechnik finde ich persönlich zu unscharf. Oder anders gesagt: n Menschen, n+1 Antworten... :lol:
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Jo, also das was ich vorhin vorschlug,in :mrgreen: (grün :D)

Persönlich gefällt mir die JavaScript-Sache ganz gut, gebündelt mit einem Algorhytmus, der von der PHP Datei zufällig in den JavaScript-Aufruf geschrieben wird.

Bis sich die erste Menschen trauen, Bots zu entwickeln, die auf Javascript mit eingehen, wird man auch Fallen einbauen können ^^ (Absichtliche ENdlosschleifen, die sich bei normaler Benutzung nie ergeben würden usw.)
Das wäre dann das absolute AUS für Forenbots... zumindest bis die Fallen wieder ausgehebelt werden :mrgreen:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Antworten