php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Spam-Einträge in Gästebüchern


 
Dave017
15-12-2005, 14:03 
 
Hallo! Ich habe ein Problem mit Spam-Einträgen in meinem Gästebuch. Kann man dagegen etwas unternehmen?

Mfg Dave

 
becstift
15-12-2005, 14:25 
 
hmm, nicht viel. das einzige was mir da einfällt, ist
1. IP bestimmte Zeit sperren
2. IP dauerhaft sperren

 
Dave017
15-12-2005, 14:35 
 
Und wie sperre ich die IP? Würde das so funktionieren? Oder gibt es eine andere Möglichkeit?

<? include("db.php");

$query = "SELECT * FROM ip_block";
$result = mysql_query($query);
while($line = mysql_fetch_array($result)) {

if($REMOTE_ADDR==$line[ip]) {

echo "Sie wurden wegen Spam gesperrt";
}
else {

//Load Guestbook

}

?>

 
archie
15-12-2005, 15:06 
 
Es gibt viele mölichkeiten, mit denen man programmiertechnisch viele sinnlose Sachen aussortieren kann, jede Einzelne Möglichkeit auszuschließen ist jedoch unmöglich.
IP+Cookie+Zeit macht schon viel Sinn.
Wenn jemand einen Beitrag schreibt, speicherst du immer eine IP und timestamp. Wenn der in < als 5 Min noch einen schreibt, setzt du bei dem nen Cookie. Dann lässt du submitbutton ausblenden solange bei ihm cookie gesetzt ist, oder die Spammschutzzeit nciht vorbei ist.

 
kapitaeniglo
16-12-2005, 00:46 
 
Hi

Submitbutton ausblenden bringt nichts. Man kann trotzdem ein ausgefuelltes Formular schicken ...

Ich wuerde die IP mit der zeit speichern. Wenn innerhalb weniger Sekunden (<30) cnoh einmal gepostet werden soll, dann einfach nicht speichern und einen text ausgeben oder zum formular zurückleiten.

Man kann das ganze auch mit Sessions machen ... oder wie man will ...
Wie schon oben gesagt : Alles ausschliessen geht nicht, aber man kann es den einfachen Spammern schon schwieriger machen.

Gruss
Iglo

 
pekka
16-12-2005, 03:22 
 
Ich empfehle ein Captcha (http://de.wikipedia.org/wiki/Captcha).
Das hier funktioniert super:
http://www.phpclasses.org/browse/package/1768.html
Braucht aber natürlich die GD.

 
Dave017
16-12-2005, 16:58 
 
Danke, ich werd mir die Class gleich einmal näher anschauen.

MfG Dave

 
steve-x
19-12-2005, 19:56 
 
ich habe das selbe problem:
http://www.stellarossa.at/gbook/gast-db.php
habe diese beiträge bisher gelöscht. jetzt nimmt es aber überhand.

ip sperre bringt glaub ich nichts, da die ihre ips wechseln.

wie hat das captcha funktioniert? ist das effektiv?
hab das problem erst seit ein paar tagen.

 
pekka
19-12-2005, 20:32 
 
Das Captcha läuft z.B. hier:
http://www.cooksdelight.co.uk/guestbook.htm ("Click here to sign")
und funktioniert einwandfrei (Keine Spameinträge mehr, davor manchmal mehrere hundert am Tag).

 
jahlives
27-12-2005, 19:04 
 
@steve-x
wie hat das captcha funktioniert? ist das effektiv?
Also so wie du die Captchas umgesetzt hast, ist es alles andere als effektiv. Du kannst doch nicht im Ernst

<img src="captcha.php?wert=984320" align="left">

In den Quellcode schreiben. Weisst du wie lange es dauert ein Spam Script so anzupassen, dass es diesen Parameter ausliest und das Form korrekt abschickt.
captcha.php muss den Code generieren und als Session Var speichern. Danach kannst du die Usereingabe gegen die Session Var vergleichen und im Erfolgsfall den Eintrag zulassen.

Der Captcha Code im Quellcode und du kannst gerade so gut auf Cpatchas verzichten.

Gruss

tobi

 
steve-x
06-01-2006, 16:23 
 
besten dank für deinen hinweis.

kannst du mir vielleicht dabei helfen, das umzusetzen?

 
pekka
07-01-2006, 03:13 
 
Original geschrieben von pekka
Ich empfehle ein Captcha (http://de.wikipedia.org/wiki/Captcha).
Das hier funktioniert super:
http://www.phpclasses.org/browse/package/1768.html
Braucht aber natürlich die GD.

 
Dark^Listener
25-04-2006, 19:45 
 
Hi habe das gleiche Problem, hab aber mittlerweile son captcher drin, der auch automatisch generiert, dennoch kommen massig spameinträge, leider auch nicht in irgendeiner erkennbaren regelmäsigkeit (mal liegen 5 min, mal 1std zwischen den einträgen)
dies lässt die vermutung naheliegen, das es sich nicht um robots handelt.

aber fast alle spams haben eine @msn.com adresse als email angegeben

meine idee ist jetzt ein script, das alle 5 min nach stichworten meine .txt mit den einträgen säubert.

weiß jemand wie das geht, hab leider noch wenig ahnung von php

thx

 
dioony
25-04-2006, 21:15 
 
ja, dazu mal einfach die stichwörter dateisystem, regex (regular expression) bzw. preg_match anschauen... Ne blacklist musst du dir dann irgendwie ausdenken...

ne gute möglichkeit ist natürlicha auch, wenn du die blacklist mit spam-wörtern oder texten mit den oben angegeben cookie-ip-time mechanismen... hättest du doppel-schutz

 
Daniela
25-04-2006, 22:08 
 
Original geschrieben von Dark^Listener
Hi habe das gleiche Problem, hab aber mittlerweile son captcher drin, der auch automatisch generiert, dennoch kommen massig spameinträge, leider auch nicht in irgendeiner erkennbaren regelmäsigkeit (mal liegen 5 min, mal 1std zwischen den einträgen)
dies lässt die vermutung naheliegen, das es sich nicht um robots handelt.

aber fast alle spams haben eine @msn.com adresse als email angegeben

meine idee ist jetzt ein script, das alle 5 min nach stichworten meine .txt mit den einträgen säubert.

weiß jemand wie das geht, hab leider noch wenig ahnung von php

thx

wenn captacha richtig installiert ist kann sich defenitiv KEIN Bot mehr in dein GB eintragen ( außer du hast ne Lücke im GB ).

Da brauchst dann auch nicht filtern.

 
pekka
26-04-2006, 00:19 
 
wenn captacha richtig installiert ist kann sich defenitiv KEIN Bot mehr in dein GB eintragen ( außer du hast ne Lücke im GB ).


Mit "definitiv" und "kein" wäre ich in diesem Bereich sehr vorsichtig. Da hab ich in letzter Zeit schon Gegenteiliges gesehen. Das Böse ruht nicht und wird auch immer besser :teach: Warum haben wir noch keinen Obi-Wan-Smiley?

Aber, stimmt natürlich: Im Moment gehören Captchas zum Besten, was man machen kann.

 
Dark^Listener
26-04-2006, 13:57 
 
installiert ist gut, ich habe code in mein gästebuch reinkopiert, aber der ist nartürlich unverschlüsselt. auf der eintrag.php ist das bild und da wird auch generiert.
in meiner gastebuch.php ist die fallunterscheidung und die auswertung der formulars


aber ich glaube halt nicht, das auch das was jetzt noch on ist, von bots kommt, dann müssten doch so sekundeneinträge kommen, bzw sind sehr wahrscheinlich.

aber wie sichert man das ab, das sich die robots nicht mehr ausm quelltext holen können, was sie brauchen??
mfg

 
Daniela
26-04-2006, 14:12 
 
hehe oki pekka, getreu dem Motto "sag niemals nie"
http://img263.imageshack.us/img263/552/000005502qf.gif

 
Mitsch
06-05-2006, 13:26 
 
Weiss jemand das Funktionsprinzip von den Spam-Bots? nach dem Prinzip "know-your-enemy" wäre diese Frage doch interessant...

Wenn ein Bot so funktioniert, indem er die Gästebuchseite mit den Parametern in der URL aufruft, also
http://www.meineseite.de/guestbook.php?title="Buy Viagra"&hpurl="www.viagra.com"
könnte man durch - sagen wir mal - tägliches automatisches umbenennen der Felder auf "title0605" und "hpurl0605" diese Attacken ausbremsen.

Hat jemand von Euch sonst noch Ideen, wie diese Bots funktionieren?

Mitsch

 
pekka
06-05-2006, 14:16 
 
Weiss jemand das Funktionsprinzip von den Spam-Bots? nach dem Prinzip "know-your-enemy" wäre diese Frage doch interessant...


Hmm... Mit Wettrüsten wie Formularfelder umbenennen würde ich mich nicht aufhalten, außer man hat aus technischem Ehrgeiz wirklich Bock darauf. Einfach, weil sich die Spammerei (aus mir unerfindlichen Gründen) finanziell so extrem zu lohnen scheint, daß man sich brillante Programmierer zur Bot-Entwicklung leisten kann. Bremst man also eine Sache aus, gibts am nächsten Tag eine Lösung dazu. Lieber eine einfache, möglichst wasserfeste Lösung, und wenns gar nicht mehr geht, muß man sich halt überlegen, ob man den bespammten Dienst (Kontaktformulare usw.) nicht doch abschaltet.

 
onemorenerd
06-05-2006, 15:13 
 
Original geschrieben von Mitsch
Weiss jemand das Funktionsprinzip von den Spam-Bots?
Schon mal in deine Logfiles gesehen?

 
Mitsch
06-05-2006, 15:32 
 
Also captcha ist für mich keine befriedigende Lösung, ich nöchte den User möglichst nicht in die Spam-Problematik involvieren.

Und als Wettrüsten würde ich das ändern der Formularfeld-Namen nicht bezeichnen, ein <input type="text" name="name<?php echo md5(date("dm"));?>"> erzeugt mir ein gehashtes Datumsfeld. Das selbe kann ich beim Weiterverwenden des Variableninhalts auch machen. Einzige Einschränkung ist natürlich, wenn jemand die Gästebuchseite um 23:59 aufruft, und seinen Eintrag um 00:01 abschickt.

Ad Log: Der eine Spammer macht ein "GET" und dann ein "HEAD", er schaut sich also an, ob sich die Seite geändert hat. Eintrag gab es aber keinen, ich fange alle Einträge ab, welche im Kommentartext eine URL haben, dafür gibt es ein eigenes URL-Feld - könnte also auch ein Mailadressen-Collector sein.
Der erfolgreiche Spammer macht direkt ein POST auf die Eintragen-Seite, also kennt er scheinbar schon die passenden Formularfelder im voraus.

Mitsch

 
wahsaga
07-05-2006, 11:46 
 
Original geschrieben von Mitsch
Einzige Einschränkung ist natürlich, wenn jemand die Gästebuchseite um 23:59 aufruft, und seinen Eintrag um 00:01 abschickt.
Könnte man natürlich auch noch umgehen - in dem man den Timestamp einmal im Klartext übergibt, dann kann man ganz einfach vergleichen, ob seitdem erst eine Zeitspanne X vergangen ist - und noch mal MD5(timestamp + Geheimcode), damit kann man überprüfen, ob daran manipuliert wurde.

Ist dann in etwa Session mit Gültigkeitskontrolle nachgebastelt - lohnt sich aber bei Bots, die sich erst das aktuelle Formular ziehen, und dann ausfüllen, genauso wenig.

 
Mitsch
07-05-2006, 11:50 
 
Original geschrieben von wahsaga
Könnte man natürlich auch noch umgehen - in dem man den Timestamp einmal im Klartext übergibt, dann kann man ganz einfach vergleichen, ob seitdem erst eine Zeitspanne X vergangen ist - und noch mal MD5(timestamp + Geheimcode), damit kann man überprüfen, ob daran manipuliert wurde.
Stimmt, wäre eine zusätzliche Möglichkeit

Ist dann in etwa Session mit Gültigkeitskontrolle nachgebastelt - lohnt sich aber bei Bots, die sich erst das aktuelle Formular ziehen, und dann ausfüllen, genauso wenig.
Und genau _das_ würde mich interessieren: Wie füllen die automatisch aus, wenn sie den Feldnamen nicht kennen? Da muß ja entweder ein 'Human-Bot' davor sitzen, oder ich schreibe ein Makro, mit dem ich Mausklicks simuliere (dafür gibt's einen Fachausdruck, der mir entfallen ist)

lg
Mitsch

 
pekka
07-05-2006, 13:27 
 
Original geschrieben von Mitsch

Und genau _das_ würde mich interessieren: Wie füllen die automatisch aus, wenn sie den Feldnamen nicht kennen?

Indem sie mit einer Schleife alle verfügbaren Felder durchgehen und deren Typen auslesen. Das ist recht simpel. Dann wird es Wörterbücher geben mit den häufigsten Feldbezeichnungen für Name, E-Mail und so weiter... Die werden dann verglichen.
Wenn eine Feldbezeichnung unklar ist (also nicht im "Wörterbuch" vorkommt) wird einfach blind drauflos ausgefüllt, das hab ich auch schon beobachtet.

 
Hobbit Stomper
16-05-2006, 12:34 
 
Wer diese Poker, Viagra Spam Werbungen kennt, weiss dass da nicht nur ein http Link drin steht, sondern meistens 5, 10 oder 20, also hab ich in allen meinen Gästebüchern (Beispiel (http://www.freak-lan.ch/guestbook/)) eine Abfrage eingebaut, dass wenn das Wort http mehr als 2 oder 3 Mal vorkommt, der Eintrag nicht vorgenommen wird und man auf eine andere Seite (http://www.freakproject.com/you_are_an_idiot.html) gelinkt wird. Seit einem halben Jahr sind alle Gästebücher Poker-Viagra frei, und normale Leute können immer noch posten.


$word = substr_count($message, 'http');
if($word >= 2)
{
echo'<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://www.freakproject.com/you_are_an_idiot.html">';
}


Eine andere Möglichkeit wäre Wörter wie Viagra oder Online Poker zu blocken.

 
TobiaZ
16-05-2006, 23:13 
 
Wordpress hat mich vor einigen Tagen auf diese Idee gebracht. Allerdings speichert Wordpress (und ich) den Beitrag trotzdem, allerdings als "Spam" gekennzeichnet.

So muss man zwar noch moderieren, hat aber die volle kontrolle.

 
bruno123
17-05-2006, 10:21 
 
Hi,

wenn das Thema noch aktuell ist, hier meine Idee:

Ich habe in meinem GB eine Prüfung eingebaut, die abcheckt, wie schnell
einer (AI / H) mein Formular ausfüllt. Ich habe es von meiner besseren
Hälfte ausfüllen lassen (Tippt mit prelliarden Anschlägen/min und kann
dabei Fernsehen und sich unterhalten).

Die Zeit habe ich halbiert und kam auf etwa 5 sec. Jetzt checkt mein Script,
ob die Zeit zum ausfüllen 5sec oder länger ist.

Als zweite Hürde habe ich eine checkbox mit einer abstrusen Variablenbezeichnung.


<input type="checkbox" name="noiamnospam" value="human"
title="machen Sie hier einen Haken um zu zeigen, dass Sie kein Spam
(Muell) eintragen wollen." />

Das klappt. :D

Erst war es moderiert, jetzt bin ich aber frohen Mutes, das es auch ohne
geht.

Es waren bis zu 130 Spams/Tag, dann noch einer/Woche, jetzt sind es (mit
beiden Hürden) 0,0 :rocks: !

Vielleicht bringt es ja dem ein oder anderen etwas.

bis denne.

Bruno

 
Dark^Listener
17-05-2006, 14:53 
 
könntest du den script zum zeit checken mal posten

 
Mitsch
17-05-2006, 16:12 
 
Original geschrieben von bruno123
Ich habe in meinem GB eine Prüfung eingebaut, die abcheckt, wie schnell
einer (AI / H) mein Formular ausfüllt. Ich habe es von meiner besseren
Hälfte ausfüllen lassen (Tippt mit prelliarden Anschlägen/min und kann
dabei Fernsehen und sich unterhalten).
Das ist eine coole Idee! :D Nur wuerde ich zusaetzlich eine obere Schranke einbauen - wenn zwischen dem Laden der Seite und dem Senden des Eintrages mehr als ein Tag liegt, wird es wohl ein Bot sein, welcher die Daten immer wieder neu submitted.

Als zweite Hürde habe ich eine checkbox mit einer abstrusen Variablenbezeichnung.
<input type="checkbox" name="noiamnospam" value="human"
title="machen Sie hier einen Haken um zu zeigen, dass Sie kein Spam
(Muell) eintragen wollen." />
Das klappt. :D
Da bin ich hingegen ueberhaupt kein Freund davon, dass die normalen Benutzer irgendwelche 'Intelligenztests' machen muessen, nur um in mein GB eintragen zu duerfen ...
Das sollte auch benutzertransparent gehen.

Meine Loesung sieht jetzt so aus:
* die Eingabefelder sind nur fuer IP-Adressen sichtbar, welche nicht auf der Blacklist stehen
* Ich habe ein eigenes Eingabefeld fuer URL-Eingaben
* ausserhalb dieses Feldes eingegene URLs werden automatisch als Spam klassifiziert
* Spam-IPs werden automatisch in die Blacklist eingetragen
* Jedes Feld hat einen Namen, welcher mittels
<input type="text" name="<?echo "n".md5(date("dM"));?>"> automatisch generiert wird -> die Felder heissen jeden Tag anders
* Falls doch wieder was kommt, werde ich die Zeitidee von Bruno kopieren, die rockt wirklich

Fazit: seit vier Tagen kein Spam-Eintrag mehr, und mittlerweile mehr als 30 IP-Adressen und IP-Adressbereiche in der Blacklist (IP-Adressbereiche deswegen, weil ich teilweise haendisch die Blacklist vervollstaendigt habe, dann schauen Eintraege halt so aus: '81.219.88.' und sperren somit '81.219.88.0/24'). Diese Blacklist lese ich auch von einem anderen GB aus (wobei das Beschreiben durch das andere GB noch nicht moeglich ist)

lg
Mitsch

 
wahsaga
17-05-2006, 16:31 
 
Original geschrieben von Mitsch
* Jedes Feld hat einen Namen, welcher mittels
<input type="text" name="<?echo "n".md5(date("dM"));?>"> automatisch generiert wird -> die Felder heissen jeden Tag anders
Das halte ich nun wieder für suboptimal - es macht das autocomplete für häufig ausgefüllte Felder wie Name, URL etc. zunichte.

Mit dem zuvor geäußerten Anspruch
Das sollte auch benutzertransparent gehen.
passt das irgendwie gar nicht zusammen - du bestrafst auf diese Weise immer noch deine menschlichen Nutzer für das Fehlverhalten der Bots ...

 
Mitsch
17-05-2006, 16:40 
 
Original geschrieben von wahsaga
[B]Das halte ich nun wieder für suboptimal - es macht das autocomplete für häufig ausgefüllte Felder wie Name, URL etc. zunichte.

Ich denke aber, das ist besser als Checkboxes, wo ich gefragt werde, ob ich Bot oder Human bin ;)

Ausserdem ist die Autocomplete-Form ja eigentlich ein GB-Bot im Browser implementiert: er fuellt die Felder aus, die er bereits aus der Browse-History kennt (ein Bot fuellt die Felder aus, die er aus seinem dict kennt). Des weiteren: wie oft traegst Du in GBs ein, dass Du das Autocomplete brauchst? Den meisten Benutzern faellt nicht auf, dass ihr Name nicht automatisch vervollstaendigt wurde ...

lg
Mitsch

 
bruno123
18-05-2006, 17:04 
 
Hier der Code.




// seite mit gb-formular

$loaded = time();





// seite die von formular angesteurt wird
$istzeit = time();
$diffzeit = $istzeit - $loaded;

if ($diffzeit <= 5) {
$error_msg = "<b>- Tippen Sie langsamer</b><br />";
}

if ($error_msg) {
echo $error_msg;
echo "<br /><a href=\"javascript:history.back()\">zur&uuml;ck</a>";
}




Einfach aber wirkungsvoll.
Und im Zweifelsfall kann man ja auf 10 sec erhöhen. Dann wird es nervig
für die Spammer, wenn jeder post ewig dauert.

@mitsch:
Sinnvoll oder nicht. Das funktioniert.

Für die idee mit der blacklist wäre ich allerdings auch zu haben!
Kannst du mal das script posten?

Ich tüftel gerade an einer session-version. Dann wird es noch
unwarscheinlicher.

 
TobiaZ
18-05-2006, 19:16 
 
wie wird $loaded übergeben?

 
bruno123
18-05-2006, 20:40 
 
Na mit nem


<input name=\"loaded\" type=\"hidden\" value=\"".$loaded."\" />


hidden field.

Aber es soll in ner session-variable mitgegeben werden. da bin ich
aber noch nicht so weit.

Greetz

 
TobiaZ
18-05-2006, 20:45 
 
naja, zwar wirksam aber nicht wirklich sicher.

 
bruno123
19-05-2006, 10:31 
 
So.
Jetzt läufts mit session. Die Variable wird erzeugt und in eine session
registriert. Die läuft dann für den Eintrag.




ini_set("session.use_cookies", 0);
session_name("ruediger");
@session_start(ruediger);

session_register("guenther");



Ausgabe mit:


echo $ruediger;
echo $_SESSION[guenther];


Das sollte jetzt klappen. Man muss nur die session schon beim öffnen
des Gästebuchs haben.

Greetz

 
wahsaga
19-05-2006, 10:45 
 
Original geschrieben von bruno123
@session_start(ruediger);
Wo hast du denn die Konstante ruediger definiert?
session_register("guenther");
Warum benutzt du immer noch session_register, obwohl das Manual deutlich darauf hinweist, dass man dies nicht mehr tun sollte?

 
Dark^Listener
21-05-2006, 13:46 
 
ich habe jetzt mit captcha und den div abfragen ruhe, zeit des ausfüllen hat wohl keinen sinn, weil ich auf human-poster tippe

dumm ist nur, das im Internet Explorer der captcha keine zahlen erzeugt, es wird nur das hintergrundbild des captcha angezeigt.
im firefox gehts






//Code in der eintrag.php der das bild erzeugt
by TobiaZ: Code entfernt.

 
onemorenerd
21-05-2006, 14:35 
 
Bitte brich deinen Code um bzw. nimm ihn raus, denn der Code ist überhaupt nicht vom verwendeten Browser abhängig und kann somit nicht Ursache des Problems sein.

Auf der Seite, von der du den Code hast, funktioniert es übrigens tadellos mit dem IE, also hast du beim Einbauen oder in deinen eigenen Codeteilen was verbockt.

 
bruno123
21-05-2006, 16:05 
 
Original geschrieben von wahsaga
Wo hast du denn die Konstante ruediger definiert?

Warum benutzt du immer noch session_register, obwohl das Manual deutlich darauf hinweist, dass man dies nicht mehr tun sollte?

Das ist der Name meiner session. Das ist keine Variable in dem Sinne.
Es ist in:


session_name("ruediger");


angegeben.


Danke für deinen Hinweis.

Wollte ich ändern, hab es aber dann vergessen weil es lief. :D

Jetzt ist es:


$_SESSION["guenther"] = $guenther;



Greetz

 
Dark^Listener
24-05-2006, 08:12 
 
der mist ja, das das ganze bis jetzt nur an einen rechner(meinem laptop) nicht funktioniert, ich weiß aber nicht, ob das nur meiner ist, der nicht funtzt oder auch einige andere von usern, desshalb würd ich gerne das problem lösen, das mein rechner hat

 
mcmurphy
12-06-2006, 13:25 
 
Hier noch eine Idee:
man lege ein Textfeld an, das per CSS unsichtbar gesetzt wird.
Wenn in diesem Textfeld dann ein Wert steht, kann man doch eigentlich von einem Spambot ausgehen...oder?

 
TobiaZ
12-06-2006, 17:02 
 
und wenn er es versehentlich(?) leer lässt?

 
mcmurphy
12-06-2006, 18:39 
 
naja, sicher ist bei dem Thema ja nix. Aber bei allen Spam Einträgen die ich bisher hatte wurden alle Felder ausgefüllt...
Und in Kombination mit den anderen hier beschrieben Tricks erhöht es auf einfache Art und Weise die Hürde für Spambots.
Der Bot müsste ja auch das CSS - File auslesen und nur die sichtbaren Felder ausfüllen ...
Aber am schönsten finde ich ja das:
Original geschrieben von bruno123
Ich habe in meinem GB eine Prüfung eingebaut, die abcheckt, wie schnell
einer (AI / H) mein Formular ausfüllt. Ich habe es von meiner besseren
Hälfte ausfüllen lassen (Tippt mit prelliarden Anschlägen/min und kann
dabei Fernsehen und sich unterhalten).

 
Mitsch
12-06-2006, 23:37 
 
Hi again!

Ich habe mir ein wenig Gedanken zu dem Thema gemacht, und mich für ein Bewertungssystem im Stile vom SpamAssassin entschieden.

vor dem Eintragen der Daten in meine Datenbank/Liste rufe ich eine Funktion
checkspam($name,$email,$homepage,$kommentar) auf, welche folgende Kriterien abcheckt:

* sind alle Felder ident: 2 Strafpunkte
* ist $kommentar leer, aber eines der anderen enthält Eingaben: 1 Strafpunkt
* enthalten name, homepage oder kommentar eine Email-Adresse: 1 Strafpunkt
* enthalten name, email oder kommentar eine URL (mit 'http'): 1 Strafpunkt
* geschieht der Eintrag zwischen 2 und 6 in der Nacht? 1 Strafpunkt

* ist die Absendedomain auflösbar und die TLD aus einer Vertrauensliste (at, de, ch): -1 Strafpunkt
* ist die Absendeuhrzeit zwischen 10 und 15 Uhr: -1 Strafpunkt

Konsequenz:
ab 3 Strafpunkte: Blacklist
ab 1 Strafpunkt: Hinweis mit entsprechender Fehlermeldung

Falls ein Besucher die Seite besucht, wird zuerst einmal seine IP gegen die Blacklist abgeglichen. Falls darin enthalten, werden einfach keine Formularfelder, stattdessen ein Hinweis ausgegeben.

lg Mitsch

 
Silkeyes
13-09-2006, 05:51 
 
Also ich hab das Problem gerade bei meinem Ex-Schwager gehabt, kurzerhand hab ich das jetzt per IP Blacklist gelöst, und nur einen Eintrag pro Stunde erlaubt, ich hab auch die Möglichkeit die Blacklist automatisch mit IP Adressen zu befüllen, wenn jemand meint, er müsse innerhalb der Stunde mehrere Einträge schicken, wobei mir die Problematik mit dynamischen IPs schon klar ist.

Ich hab keine Lust dynamische Bildchen einzusetzen damit der User mehr machen muß, als nur den Submitknopf zu drücken. Mich nervt das auch immer auf anderen Seiten.

Jedenfalls hab ich mir schon mal die nächsten Schritte überlegt, wenn das nicht reichen sollte.

- Cookie setzen und auf Cookie prüfen (damit sind schon mal alle Bots draußen, die keine Cookies annehmen - tja und die paar Prozent User, die es in ihrem Browser auch nicht tun)

- HTTP_USER_AGENT auf Browser prüfen (wieder ein paar Bots weniger, die sich nicht als Browser ausgeben)

- per JavaScript bei onSubmit einen Fehler erzeugen und dann mittels onError doch das Formular zustellen, aber davor noch dynamisch form.action ändern (so, also spätestens hier muß der Bot passen und sich ein Programmierer die Seite anschauen, außer natürlich der Bot ist kein einfaches Script sondern läuft mit einer Browserengine), das normale Action führt natürlich wieder auf das Gästebuch selbst zurück ohne irgendeinen Eintrag (Nachteil für alle, die JavaScript ausschalten, aber die 2%...)

Ich mach mir die nächsten Tage paar Gedanken, was man noch so alles machen könnte.

 
Silkeyes
13-09-2006, 06:16 
 
Jetzt ist mir glatt nochmal was eingefallen:

Da bei serverseitigen Imagemaps die Mausposition übergeben wird, könnte man prüfen, ob diese realistische Werte hat bzw. ob da überhaupt was übergeben wurde. Der Submitbutton ist natürlich diese Map.

So und um das noch technischer (und noch unfreundlicher für Behinderte) zu gestalten, wird der Submit mittels einen JavaApplets realisiert, das sobald die Maus darüber ist einfach mal die Bewegung registiert. Es reicht eigentlich vollig aus zu prüfen, ob die Maus bewegt wurde. Wenn man jetzt das action Attribut für das Formular fest in das Applet kodieren könnte und in dem HTML Quelltext nur ein Dummy stehen würde, dann wäre man fein raus und selbst der beste Bot müßte wohl passen. Ich hab aber keine Ahnung, ob das geht. Meine Java Vorlesungen sind schon recht lange her aber ich erinnere mich, daß man von Java aus JavaScript steuern konnte (oder war's nur umgekehrt ?) und damit sollte es möglich sein das action Attribut gerade noch vor dem Abschicken zu ändern.

Hm... u.U. könnte man das auch mit Flash machen.

 
wahsaga
13-09-2006, 09:14 
 
Das meiste ist ziemlicher Käse.

Erst braucht's Cookies, dann Javascript, dann noch eine Maus, evtl. noch Flash ...
Und die "klitzekleinen Prozentzahlen" von Nutzern, die Technik X nicht haben, summieren sich plötzlich.

 
jahlives
13-09-2006, 13:39 
 
@mitsch
Ich glaube nicht, dass du so sehr weit kommen wirst. Jeder der dir aus den USA oder Asien (nach deren Arbeitszeit) einen Eintrag macht, hat ja schonmal einen Punkt auf sicher --> ich würde die Punkte nicht nach Uhrzeit vergeben.
Auch könnte ein gemeiner Spammer dafür sorgen, dass er seinen Mist zwischen 10 und 15 Uhr einträgt (minus 1 Punkt) und via einen Proxy aus de,au oder ch verschicken (nochmals minus 1)
Dann knallt er den Kommentar mit Links zu seinem Viagra Scheiss zu und du kannst nix dagegen machen.
imho gibt es nur zwei einigermassen wirksame Konzepte gegen Spam:
Entweder du servierst dem User ein Assoziatonsaufgabe, welche eine Maschine nicht erfüllen kann (Captcha oder ein Bilderrätsel) oder du verwendest einen lernfähigen Spamfilter mit Wortanalyse.
Den Filter musst du natürlich erst ein wenig trainieren, aber dann sind solche statistischen Filter ziemlich unschlagbar. Natürlich sind die Suchalgos solcher Filter alles andere als einfach, aber vielleicht gibt es ja was fertiges in den Weiten des www
Noch ne kleine Frage zum Schluss: Du wirst hoffentlich kein HTML in den Einträgen erlauben oder wenn nein dann zumindest filtern ?
Falls ungefiltert erlaubt, dann würde ich mir um ganz andere Dinge sorgen machen, als um Spam...

Gruss

tobi

 
onemorenerd
13-09-2006, 15:36 
 
http://akismet.com/development/

 
Silkeyes
13-09-2006, 16:10 
 
Die Prozentzahlen summieren sich ja eben nicht einfach. Wenn von mir aus 3% JavaScript ausgeschaltet haben und 5% Java ausgeschaltet haben und 4% keine Cookies annehmen, dann sind das eben keine 12%, die das Formular nicht benutzen können, sondern wahrscheinlich eher 6%-8%. Der Teil der Surferschaft wundert sich eh nicht, wenn auf einer Seite mal etwas nicht geht und weiß damit sowieso umzugehen. Der 0815-User hat nicht mal eine Ahnung, daß man Java ausschalten kann geschweige denn wo.

 
jahlives
13-09-2006, 16:19 
 
Der 0815-User hat nicht mal eine Ahnung, daß man Java ausschalten kann geschweige denn wo.

Aber du kennst den Unterschied zwischen Java und Javascript ;) Dein 0815 User wird die JRE gar nicht installieren und damit hat er auch kein Java.

Gruss

tobi

 
wahsaga
13-09-2006, 16:22 
 
Original geschrieben von Silkeyes
sondern wahrscheinlich eher 6%-8%.
Also schon jeder 16. bis 12. Nutzer ...

 
Silkeyes
13-09-2006, 19:32 
 
@ 0815-User

Auf Windows ist Java im IE eh vorinstalliert und der 0815-User ist eben Windowsnutzer. Sollte er dennoch ein Linuxuser sein, dann installiert er spätenstens Java, wenn sein Lieblingschat nicht funktioniert (bzw. läßt das durch einen Bekannten machen).

@ jeder 12. bis 16. User

Stimmt, die haben erst mal Pech gehabt, wobei die Betonung auf erst mal liegt. Ich halte User, die nicht nur zufällig durch einem (Online-)Beitrag sich der Sicherheitsproblematik des Surfens bewußt sind für schlau genug bestimmte Funktionalitäten wenigstens zeitweise wieder einzuschalten, wenn es die Seite verlangt und wenn sie das Bedürfnis verspüren unbedingt den Gästebucheintrag zu machen. Wir müßten jetzt also irgendwie einen Prozentsatz schätzen, der sich auf User bezieht, der diese Funktionen auf seinem System ausgeschaltet hat und diese auch nicht selbst einschalten kann. Dazu fallen mir vor allem die Behinderten ein, deren Browser diese Techniken wohl nur unzureichend, weil eben für sie unsinnig, unterstützen. Aber wenn der Sehbehinderte (oder schlimmer Blinde) da 4 Zeichen aus einem Bild, bei dem ich mir schon Mühe geben muß zu erkennen welche es sind, in ein Textfeld eingeben muß, dann hat er eben auch verloren und zwar auf ganzer Linie.

Aber danke für die Anregungen, mir ist das heute noch im Kopf herumgegangen und ich bin auf Folgendes gekommen:

Wie wäre es mit einer Frage mit 5-10 Antwortmöglichkeiten und nur bei richtiger Beantwortung der Frage wird überhaupt was eingetragen ? Dann hast man noch eine von 5 Fragen zur Auswahl, die dann eben dynamisch ausgewählt werden, damit ein Robot nicht so eingestellt werden kann, daß er die Frage immer richtig beantwortet. Das sollte auch für Blinde funktionieren und die Fragen sind natürlich so einfach, daß es selbst ein Kind schafft, diese zu beantworten. Gut, nervig ist das natürlich trotzdem, aber eine Combobox halte ich immernoch für komfortabler als 4 Zeichen mit der Tastatur tippen.

Eine andere Überlegung (okay, dazu brauche ich tatsächlich mal wieder JavaScript) wäre es die Zeiten zu messen, die zwischen den Tastendrücken bei der Eingabe in ein Feld liegen. Menschen tippen anders als Scripte.

 
wahsaga
13-09-2006, 20:04 
 
Original geschrieben von Silkeyes
Auf Windows ist Java im IE eh vorinstalliert
Quark.

XP bringt von Haus aus keine JVM mit, und ich habe auch bis heute noch keine.
JAVA im Web ist tot.

Stimmt, die haben erst mal Pech gehabt, wobei die Betonung auf erst mal liegt. Ich halte User, die nicht nur zufällig durch einem (Online-)Beitrag sich der Sicherheitsproblematik des Surfens bewußt sind für schlau genug bestimmte Funktionalitäten wenigstens zeitweise wieder einzuschalten
Können != Dürfen

Nicht überall hast du Zugriff auf die Einstellungen, Netzwerke in Firmen/Unis/etc.

Eine andere Überlegung (okay, dazu brauche ich tatsächlich mal wieder JavaScript) wäre es die Zeiten zu messen, die zwischen den Tastendrücken bei der Eingabe in ein Feld liegen. Menschen tippen anders als Scripte.
Und wenn ich meinen Text statt in einer fisseligen Textarea lieber im Editor vorschreibe, und dann per copy&paste einfüge ...?



Du willst eigentlich Spambots das Leben schwer machen - und zeigst dich dabei aber äußerst kreativ, dem menschlichen Nutzer die Bedienung der Seite zu verleiden.

 
Silkeyes
13-09-2006, 20:28 
 
Und wenn ich meinen Text statt in einer fisseligen Textarea lieber im Editor vorschreibe, und dann per copy&paste einfüge ...?


Also, wenn ich nur auf diese Gruppe von Usern keine Rücksicht nehmen müßte, die das machen, dann wäre ich ja schon durch. Ich meine, wie hoch willst Du denn den Anteil beziffern ? Mehr als ein Promille ? Wohl kaum.

Aber es ist eigentlich egal, ob Du es per Copy&Paste machst oder nicht, weil die allermeisten Gästebücher habe zwei Felder die ausgefüllt werden wollen zum einen ist das der Name und zum anderen der Text (mehr ist optional) und Du wirst Deinen Namen bzw. Nickname ja wohl doch noch von Hand schreiben, oder ? Tja und diese Tastenintervalle werden eben auch registiert und damit unterscheidest Du Dich schon mal von einem Skript. :-p

XP ohne JVM ? Danke, wußte ich nicht, bei mir war das letzte Windows das 2000er.

 
Silkeyes
13-09-2006, 20:36 
 
Hoppla, noch ein kleiner Nachtrag zu dem Copy&Paste:

Ich kann ja auch abfragen, ob Du eine Tastaturkombination zum Befüllen des Feldes genommen hast, also müßtest Du es schon mit der Maus machen, damit ich Dich (für dieses Feld wenigstens) disqualifiziere. Wenn Du das nun auch mit dem Namensfeld machst, dann hast Du aber gewonnen. Jedenfalls vorerst. *g*

@ 4 Zeichen aus einem verwaschenen Bild eintippen
Userfreundlich klingt das ja auch nicht gerade, auch wenn's von der technischen Seite in jedem Browser funktioniert.

Noch eine Möglichkeit:
Das Eingabefeld befindet sich nicht oben sondern unten, jedenfalls so weit, daß man (wenigstens ein bißchen) scrollen muß. Tja und muß der User scrollen (Maus, Tastatur, per Stimmkommando) sagt JavaScript eindeutig, daß es wohl kein Script ist.

 
onemorenerd
13-09-2006, 21:02 
 
Deine bisherigen Ideen wie du Javascript einsetzen könntest, sind doch alle Humbug. Ganz abgesehen davon, dass es echte User auch deaktiviert haben können und es sich deswegen völlig verbietet, solltest du mal in Betracht ziehen, wie Spambots arbeiten.

Sie suchen nach Standard-Formularen, z.B. der Kommentarform der üblichen Blogs. Finden sie eins, senden sie einen Request an den ebenso standardisierten Empfänger des Formulars. Sie füllen nicht das Formular selbst aus! Das heißt, es werden keine Javascript-Events gefeuert etc.

Nun sind ja nicht nur Blogs und Freeware-Gästebücher betroffen. Zu viele Bots spammen auch in selbstgestrickte Formulare. Manche recht stupide, indem sie einfach einmal(!) Typen und Namen der Inputs lesen und daraus Requests generieren. Andere ganz doof - da werden nur die Namen gelesen und drauflos geballert, ganz gleich ob es nur Checkboxen sind.

Und dann gibt es aber auch die etwas ausgefeilteren Bots, bei denen ein Mensch einmalig deine Seite ansurft, manuell den Spam eintippt und abschickt. Der Bot nimmt das auf und wiederholt das fortan mit verschiedenem Spam. Da versagt so ziemlich jeder passive Ansatz (Tippgeschwindigkeit, Scrollen, JS-Events). Aber alles was vom User etwas Intelligenz erfordert, hilft dagegen sehr wohl. (Captchas helfen übrigens nicht! Niemehr und nirgends!)

Nun bin ich aber auch kein Freund von Fragespielchen und Tippaufgaben. Deshalb habe ich den Link oben gepostet. Hast du dir den mal angeschaut?
Wenn es dir zu trivial ist, den Text von einem externen Service prüfen zu lassen, kannst du ja auch eigene serverseitige Lösungen implementieren.
Manche Emailspamfilter lassen sich mit etwas Training sehr gut auch als Webspamfilter einsetzen. http://crm114.sourceforge.net/ zum Beispiel.

Spamerkennung nicht auf Kosten irgendwelcher User, nichtmal eines einzigen!

 
Silkeyes
14-09-2006, 03:00 
 
Also so langsam regt es mich auf, daß man so ziemlich jede Möglichkeit eines Browsers verbieten will nur um des Prinzips willen. Wenn JavaScript nur dazu da ist um es abzuschalten, dann frag ich mich, warum es jeder moderne Browser unterstützt (und es 97% eingeschaltet haben), bei Flash sieht das nicht anders aus. Aber egal...

User:

1. Gästebuch wird aufgerufen, Gästebuch trägt zwei zufällige Werte check1 und check2, die beliebig groß, aber nicht zu klein sind in eine Datenbank mit Zeitstempel ein. Diese werden in hidden Feldern mit dem Formular mitgegeben.

2. User füllt Eintrag aus und schickt ihn ab.

3. Handler prüft, ob die mitgeschickten Werte noch aktuell sind, falls ja dann wird eingetragen und die Werte aus der Datenbank gelöscht.

Der böse aber hochintelligente Spambot:

1. Stellt seinen Eintrag für das Gästebuch aus einer Spamdatenbank zusammen.
2. Schickt den Eintrag an den Handler ab (natürlich mit jeweils einer neuen IP Adresse) mit zwei Werten, die er sich zuvor aus einem anderen Eintrag erschlichen hat.
3. Handler prüft, findet die Werte nicht in der Datenbank und trägt nichts ein.

Der böse aber noch viel intelligentere Spambot V2:
1. Stellt seinen Eintrag für das Gästebuch aus einer Spamdatenbank zusammen.
2. Schickt den Eintrag an den Handler ab und generiert zufällig zwei Werte für check1 und check2.
3. Handler prüft, findet die Werte nicht (bei zwei Werten ist die Wahrscheinlichkeit einer zufälligen Übereinstimmung wirklich winzig - der Prozenzsatz ist sogar noch niedriger, als der von Leuten, die für einen Gästebucheintrag einen Editor benutzen um den Text dann in die Textarea reinzukopieren) in der Datenbank und trägt nichts ein.

So und jetzt kommst Du...

Ach ja, zum Argument "Datenbank = Overkill": dann schreib ich die Werte eben in eine Datei ! PHP werd ich ja hoffentlich noch benutzen dürfen.

 
el muesli
14-09-2006, 08:18 
 
Ich glaube hier wurde schon alles gesagt. Es ist halt Geschmackssache - kommt ja auch ein bisschen auf dein Klientel an. Rätselraten finde ich extrem belastend. Persönlich hab ich mir ja auch mal ein Captcha programmiert, aber bin nicht mehr überzeugt davon (weil das ja Rätselraten ist).
Ich finde die Sache mit dem "externen" Spamfilter sehr interessant...
@onemorenerd: :grin:
Die Idee beim Aufruf der Seite sowas wie einen Sicherheitscode zu generieren, irgendwo zu speichern und beim Eintrag zu überprüfen klingt auch interessant. Aber sobald ein Bot so auf die Seite geht, wie ein normaler User ist es ja wieder absolut wirkungslos... Man kann sich viele Sachen einfallen lassen, miteinander kombinieren usw. aber am Ende gewinnt der Spamfilter ;).

 
wahsaga
14-09-2006, 10:11 
 
Original geschrieben von Silkeyes
Also so langsam regt es mich auf, daß man so ziemlich jede Möglichkeit eines Browsers verbieten will nur um des Prinzips willen.
Nicht um des Prinzips willen, sondern aus (teilweise) sehr guten Gründen.

So und jetzt kommst Du...
Was du da beschreibst, ist im Grunde nichts anderes, als ein Session-Mechanismus.
Der Client wird anhand irgendeiner Identifizierung wiedererkannt, und muss dann bestimmte Werte wieder mit übermitteln, die zur Kontrolle verwendet werden.

Nur nützt dir das leider nichts gegen Bots, die jedes mal dein Formular parsen, sich dort das Identifizierungs-Token herholen, und es dann beim Abschicken ihrer Werte mitschicken ...


Alle deine Vorschläge sind kaum neu, und wurden auch hier bereits diskutiert.

 
Silkeyes
14-09-2006, 18:18 
 
Ich habe einen Vorschlag.

Da hier die Diskussion theoretischer Natur ist, wie wäre es damit, wenn ich Euch ein Gästebuch zur Verfügung stelle und sich dann jeder austoben darf und versucht das Gästebuch vollzuspammen.

Ich hätte mir folgende Regeln dazu überlegt:

1. Gästebuch hat zwei Felder, "Name" und "Beitrag"
2. es ist kein JavaScript nötig um das Gästebuch per Hand zu befüllen, wer allerdings JavaScript eingeschaltet hat, der riskiert, daß JavaScript das Nutzerverhalten auswertet
3. es wird kein externer Dienst zur Spambekämpfung verwendet und auch intern wird nicht nach Text gefiltert (außer einer einfachen Filterung auf doppelte Einträge)
4. weder Flash noch Java werden gebraucht um das Gästebuch per Hand auszufüllen, noch exotischere Plug-ins schon gleich gar nicht
5. Keine Ratespielchen, der User füllt nur Name und Beitrag aus und drückt den Submitknopf
6. Da ich nicht vor habe nach gleichen Namen zu filtern, kann (und sollte) der Name den Nick hier darstellen, damit die Leute dann beweisen können, daß sie mir das Gästebuch vollgespammt haben und nicht jemand anderer.
7. Beide Felder müssen ausgefüllt werden, ist ein Feld nicht ausgefüllt, gibt's auch keinen Beitrag
8. Was der Spambot macht ist mir egal, ob er nur Request an den Handler sendet, ob er zuerst das Formular auswertet und dann sendet oder ob er nochmal was anderes macht. Es sollte jedoch ein Spambot sein, den man theoretisch auch auf andere Gästebücher loslassen könnte (mit leichten Anpassungen).
9. den Server hacken und so das Gästebuch zu ändern gilt nicht ! (außerdem wär da mein Provider auch recht sauer)
10. Ein erfolgreicher Spamversuch besteht aus 30 Einträgen innerhalb kurzer Zeit

Interesse ? Meinungen ?

 
onemorenerd
14-09-2006, 18:27 
 
Interesse! Hier! Los!

 
Silkeyes
14-09-2006, 18:45 
 
Original geschrieben von onemorenerd
Interesse! Hier! Los!

Okay, prima, auf Dich habe ich ja gehofft (Du bist sozusagen mein Lieblingswidersacher *G*). Gib mir mal eine Woche bzw. das Wochenende um das zu programmieren, dann poste ich den Link.

 
Marcusson
14-09-2006, 19:07 
 
Klingt ja lustig. Das will ich sehen!

Wie wäre es mit einem Makrorekorder, der mit einem echten Browser Mausbewegungen und Tastenanschläge reproduziert ;)

Die Idee mit der automatischen Blacklist ist auch nicht schlecht. Bringt aber natürlich wenig, wenn man einen Spam-Bot hat, der rotierende Proxy-Server oder eine Kaskade benutzt.

Ich hatte es mal mit einem heuristischen Ansatz probiert, ähnlich wie TB oder das bereits zitierte Spam-Assassin. Sprich: das Tool sollte ganz individuell statistische Daten über den "normale" Betrieb eines Gästebuches und zum Vergleich statistische Informationen über Spams. Sprich: durchschn. Einträge pro Stunde zu einer bestimmten Tageszeit, Länge der Einträge, durchschnittliche Häufigkeit von Text und Sonderzeichen. Oder andere Daten.

Anschliessend jeden neuen Eintrag bewerten und ab einer bestimmten Wahrscheinlichkeit (zum Bsp. 80%) einen Eintrag als Spam behandeln.
Problem dabei war aber, dass anders als bei E-Mails die Anzahl von Gästebucheinträgen normalerweise bei vielen Webseiten eher gering ist. So dass es praktisch nur auf großen Community-Seiten funktioniert, weil kleine Webseiten zu selten oder zu unregelmässig Einträge aufweisen um in halbwegs brauchbarer Zeit eine gute Statistik zu berechnen. Daher wieder verworfen :(

Man könnte Signaturen / reguläre Ausdrücke / IP-Blacklists natürlich auch wie bei Virenscannern auf einem zentralen Server speichern und Spamfilter so mit regelmässig mit aktuellen Daten füttern. Allerdings müsste sich dann jemand dazu erbarmen diesen Server zu bezahlen und zu verwalten und wie ich die Menschheit kenne, wird das niemand tun ohne zumindest etwas Geld dafür zu sehen. ;)

 
wahsaga
14-09-2006, 19:51 
 
Original geschrieben von onemorenerd
Interesse! Hier! Los!
Dann erkläre ich mich bereit, den Gegentest zu machen - ob es als menschlicher Benutzer noch möglich ist, Einträge zu verfassen, bei den Geschützen die du auffahren willst ...

 
Silkeyes
29-09-2006, 06:28 
 
Okay, ich weiß, das hat jetzt etwas länger gedauert, als versprochen. Manchmal hat man eben für's Hobby nicht soviel Zeit, wie man will. Egal...
Ich hab jetzt damit angefangen und es wird über's Wochenende fertig, am Montag kann also der Test losgehen.

 
Silkeyes
05-10-2006, 03:46 
 
Fertig. :-)

Gerade fertig getestet. Ich wünsche viel Spaß.

http://www.expressiveeyes.com/spamalot/

Tja und wer es innerhalb kurzer Zeit schafft 30 Spameinträge zu machen, meldet sich im Forum und schreit HIER !

Im Formular ist noch ein zusätzliches Feld zu finden, daß sich email nennt, wozu das da ist, verrate ich nicht. Einfach mal den Quelltext lesen, dann sollte es klar werden.

Da ich Ende Oktober nach Paris fahre, würde ich mal sagen, daß 3 Wochen reichen sollten, falls das nicht schon deutlich früher passiert und hier alle Recht hatten außer mir. ;-)

Nochmal sorry für die Verzögerung, aber manchmal ist das Leben turbulenter als gedacht.

 
TobiaZ
05-10-2006, 13:06 
 
Nen kommentar a la "Nette Seite!" wird mit Fehler 7 Quittiert. Das Gästebuch ist unbrauchbar!

was ein Quatsch, selbst deinen Eintrag "So und und gleich stell ich denk Link ins Forum und dann kann's losgehen. :-)". kann ich nicht eingeben. gleicher Fehler nr. 7.

Einen ganz normalen netten eintrag (jede menge zeichen und nicht annähernd bereits eingetragen): NR. 7.

hab nen ganz normalen Vornamen angegeben und ich nutze ne effe FF-Installation.

 
el muesli
05-10-2006, 13:14 
 
Original geschrieben von Silkeyes
10. Ein erfolgreicher Spamversuch besteht aus 30 Einträgen innerhalb kurzer Zeit
Also ich bekomme in meinem Gästebuch ca. 10 Spameinträge pro Tag und empfinde das auch als Spam. Was ist bei dir eine "kurze Zeit"? :)

 
Silkeyes
05-10-2006, 13:14 
 
Ich hab's gerade mit meinem Firefox ausprobiert (neueste Version, wobei das völlig egal ist, jedenfalls im Grunde). Kein Problem. Eintrag steht auch da. Kannst Dich selbst davon überzeugen.

Fehler Nr. 7 ? Kann ich Dir sogar sagen ohne hier jemandem zu helfen, daß Deine IP Adresse schon mal registriert wurde mit einem Eintragsversuch innerhalb von einer bestimmten Zeit und Du deswegen diesen Fehler bekommst.

 
Silkeyes
05-10-2006, 13:20 
 
Original geschrieben von el muesli
Also ich bekomme in meinem Gästebuch ca. 10 Spameinträge pro Tag und empfinde das auch als Spam. Was ist bei dir eine "kurze Zeit"? :)

Ich empfinde sogar einen einzelnen Eintrag, der von einem menschlichen User gemacht wurde und der nur dazu dient, die URL seiner Homepage zu bewerben als Spam, aber ich möchte ja User von Spambots unterscheiden, wenn ein User doof ist, kann ich auch nichts dafür.

Ich hab einfach mal "30 innerhalb kurzer Zeit" gesagt, damit es eine Herausforderung für den Spambot ist, es auch zu schaffen. Was soll eine kurze Zeit sein ? Hm... 1h ? Ich weiß es nicht. Das definiert jeder anders, aber 1h klingt doch ganz fair. Ich hoffe, Du willst nicht daß ich Dir "kurze Zeit" genauer definiere, damit Dein Spambot sich wortgetreu an die Definition hält und Du damit diese Regel erfüllst. Denk Dir einfach, was vernünftig wäre.

 
TobiaZ
05-10-2006, 13:24 
 
Also bei mir gehts definitiv nicht. Ich kenn deine Regeln ja nicht, daher kann und will ich nicht weiter forschen. Fest steht, für mich, dass da irgendwas nicht korrekt ist. ;)

 
Silkeyes
05-10-2006, 13:26 
 
Original geschrieben von TobiaZ
...
Einen ganz normalen netten eintrag (jede menge zeichen und nicht annähernd bereits eingetragen): NR. 7.
...

Ich filtere weder nach Text noch nach Namen, ich prüfe nicht mal (obwohl zuvor erwähnt), ob da wirklich was steht, theoretisch sind also sogar leere Einträge möglich. Ledeglich Sonderzeichen werden "entschäft".

 
Silkeyes
05-10-2006, 13:29 
 
Original geschrieben von TobiaZ
Also bei mir gehts definitiv nicht. Ich kenn deine Regeln ja nicht, daher kann und will ich nicht weiter forschen. Fest steht, für mich, dass da irgendwas nicht korrekt ist. ;)

Versuch's doch mal mit einer neuen IP... Fehler Nr. 7 gibt's nur, wenn Du schon im Log stehst.

Natürlich kennst Du meine Regeln nicht, wenn ich die hier posten würde, dann könnte ich ja gleich den Quellcode offenlegen und der Spaß wäre binnen kurzer Zeit vorbei.

 
TobiaZ
05-10-2006, 13:37 
 
dann mach ichs morgen vielleicht noch mal. (kein bock jetzt in den keller zu laufen. :D)

Aber fakt ist ja, dass dein System schon jetzt nicht funktioniert. Schließlich hätte es zu dieser Situation gar nicht kommen dürfen.

 
el muesli
05-10-2006, 13:41 
 
Original geschrieben von Silkeyes
Ich hoffe, Du willst nicht daß ich Dir "kurze Zeit" genauer definiere, damit Dein Spambot sich wortgetreu an die Definition hält und Du damit diese Regel erfüllst.
Um ehrlich zu sein: ich glaube nicht, dass sich jemand hier die Mühe macht dein "Anti-Spam-System" zu knacken... Zumal es ja schon schwierig ist mit normalen Einträgen durchzukommen. ;)
Eine IP zu sperren, nachdem sie einen Eintrag hinterlassen hat finde ich lame.
Folgendes Szenario: mein Bruder möchte sich, nachdem ich mir deine Seite angeguckt habe, auch bei dir umsehen und dir was schreiben... Fehler 7 - Jetzt ist mein Bruder traurig. :D
Ich schätze mit meiner aktuellen IP komme ich jetzt erstmal ne ganze Weile nicht mehr durch. :(

 
Trashar
05-10-2006, 13:43 
 
Ich bekamm erst Fehler Nr 5, danach fehler nr 7

leider weiß ich ja nicht was der heißt :(

 
Silkeyes
05-10-2006, 13:44 
 
Original geschrieben von TobiaZ
dann mach ichs morgen vielleicht noch mal. (kein bock jetzt in den keller zu laufen. :D)

Aber fakt ist ja, dass dein System schon jetzt nicht funktioniert. Schließlich hätte es zu dieser Situation gar nicht kommen dürfen.

Tip: Starte Deinen Router über den Browser neu

Ich bin mir ziemlich sicher, daß der erste Fehler auch nicht die Nr. 7 war, weil das gar nicht geht. Mein letzter Eintrag war heute morgen gegen 4 Uhr und falls da niemand mit Deiner IP (und das ist furchtbar unwahrscheinlich) zwischen 4 Uhr und Deinem Versuch einen Eintrag gemacht hat, kannst Du Fehler Nr. 7 nicht verursachen.

 
Marcusson
05-10-2006, 13:44 
 
Ich rufe das Ding auf, klicke ohne was zu ändern auf "abschicken" und kriege Fehler 0?? Wenigstens die Voreinstellungen sollten doch funktionieren, oder? Beim nächsten Versuch - egal was man eingibt - dann immer Fehler 7.

Das Teil ist IMHO leider völlig unbrauchbar. :(

Außerdem wäre es schon durchaus sinnvoll den Quellcode zu zeigen, denn die wirklich aktiv gefährdeten Gästebücher sind ohnehin die, welche eine große Verbreitung haben und das sind eindeutig die kostenlos downloadbaren Open-Source Lösungen und nicht Fritzchen-Krauses Privatbüchlein für sich und seine drei Katzen. Außerdem wie heißt es so schön: "security by obscurity is an illusion". Also her mit der Source, dann sehen wir weiter.

Oder hast du Angst, dass wir deine Idee in der Luft zerreissen? ;) Das passiert unter Fachleuten sowieso - ob nun mit Quellcode oder ohne.

 
Trashar
05-10-2006, 13:47 
 
Hau doch nen Link rein, damit die eigene IP manuell aus den Log gehaun werden kann (für die Testzwecke)

 
Silkeyes
05-10-2006, 13:47 
 
Original geschrieben von Trashar
Ich bekamm erst Fehler Nr 5, danach fehler nr 7

leider weiß ich ja nicht was der heißt :(

Zuerst Fehler 5, dann 7 ist ganz normales und regelkonformes Verhalten. Leider kann ich Dir nicht erklären, wieso Du Fehler Nr. 5 bekommst, ohne eine großen Teil des Spamschutzes zu verraten.

 
Silkeyes
05-10-2006, 13:51 
 
Original geschrieben von Marcusson
Ich rufe das Ding auf, klicke ohne was zu ändern auf "abschicken" und kriege Fehler 0?? Wenigstens die Voreinstellungen sollten doch funktionieren, oder? Beim nächsten Versuch - egal was man eingibt - dann immer Fehler 7.

Das Teil ist IMHO leider völlig unbrauchbar. :(

Fehler Nr. 0 ? Endlich mal was Spannendes. Surfst Du zufällig mit einem Anonymizer Dienst oder hast Du Deinen Browser extrem auf Anonymität getrimmt ? Eine andere Möglichkeit den Fehler zu schaffen würde mir spontan gar nicht einfallen.

Ach ja, wer Fehler Nr. 1, 2 oder 3 schafft, der bekommt einen Bonuspunkt. ;-)

 
wahsaga
05-10-2006, 13:51 
 
Original geschrieben von Silkeyes
Zuerst Fehler 5, dann 7 ist ganz normales und regelkonformes Verhalten.
Beim Test als normaler Benutzer?
(Ich gehe mal davon aus, dass Trashar manuell getestet hat.)


Ich hab's von Anfang an vermutet - dein Script ist kein Spam-, sondern ein Nutzungsverhinderer.

 
Silkeyes
05-10-2006, 13:53 
 
Ich hab zwei neue Einträge im Spambook, also scheint es ja doch zu gehen...

 
wahsaga
05-10-2006, 13:54 
 
Original geschrieben von Silkeyes
Ich hab zwei neue Einträge im Spambook, also scheint es ja doch zu gehen...
Und wie viele wurden abgewiesen ...?

 
Trashar
05-10-2006, 13:55 
 
<?php
if(isset($_POST['send'])) {
$zahl = rand(0,9);
if($zahl < 10) {
echo 'Fehler '.$zahl;
}
else mysql_query("INSERT ..");
}
?>


Sorry musste einfach sein :P

Bis jetzt muss ich wahsaga zustimmen.
Sry.. MfG

 
Silkeyes
05-10-2006, 13:56 
 
Original geschrieben von wahsaga
Beim Test als normaler Benutzer?
(Ich gehe mal davon aus, dass Trashar manuell getestet hat.)


Ich hab's von Anfang an vermutet - dein Script ist kein Spam-, sondern ein Nutzungsverhinderer.

Probier es doch mal selbst, bevor Du laut schreist. Wie gesagt, erst 5 dann 7 (lassen wir mal die 7, die kommt immer beim jeden Versuch bis auf den ersten) ist regelkonform vom Script. Die 5 schafft auf ein normaler User, es ist aber recht unwahrscheinlich, wenn er sich wie ein User verhält, der einen normalen Gästebucheintrag macht, ich möchte direkt behaupten, daß es bei einem erwünschten Eintrag unmöglich ist, Fehler Nr. 5 zu erhalten.

 
Marcusson
05-10-2006, 13:58 
 
Original geschrieben von Silkeyes
Fehler Nr. 0 ? Endlich mal was Spannendes. Surfst Du zufällig mit einem Anonymizer Dienst oder hast Du Deinen Browser extrem auf Anonymität getrimmt ? Eine andere Möglichkeit den Fehler zu schaffen würde mir spontan gar nicht einfallen.

Nein. Ich surfe einfach nur mit einem stinknormalen Textbrowser a la Lynx. Hat was mit der Perfomance und meiner 56k-Leitung zu tun.

 
Silkeyes
05-10-2006, 13:58 
 
Original geschrieben von wahsaga
Und wie viele wurden abgewiesen ...?

Zähl ich nicht, ich protokolliere nicht alle Eintragsversuche.

 
Trashar
05-10-2006, 13:59 
 
Original geschrieben von Trashar
Hau doch nen Link rein, damit die eigene IP manuell aus den Log gehaun werden kann (für die Testzwecke)

!!!
Dann könnte man es auch mehrmals testen, denn es gibt leute die können sich nicht mal eben neu ins netz wählen da sie in einer großen firma sitzen und nicht mal eben die netzverbindung trennen können...

 
Silkeyes
05-10-2006, 14:01 
 
Original geschrieben von Marcusson

Oder hast du Angst, dass wir deine Idee in der Luft zerreissen? ;) Das passiert unter Fachleuten sowieso - ob nun mit Quellcode oder ohne.

Quellcode gibt's am Ende.

 
wahsaga
05-10-2006, 14:02 
 
Original geschrieben von Silkeyes
Zähl ich nicht, ich protokolliere nicht alle Eintragsversuche.
Wenn es nicht mal eine Möglichkeit gibt, am Ende festzustellen wie viele false positives dein Filter ausgelöst hat, ist der "Test" m.E. komplett sinnfrei.

 
Silkeyes
05-10-2006, 14:05 
 
Original geschrieben von Marcusson
Nein. Ich surfe einfach nur mit einem stinknormalen Textbrowser a la Lynx. Hat was mit der Perfomance und meiner 56k-Leitung zu tun.

Okay, Dein Textbrowser sendet keinen standardkonformen HTTP HEADER.

So langsam kann ich wirklich gleich den Quelltext posten.

 
Silkeyes
05-10-2006, 14:08 
 
Original geschrieben von wahsaga
Wenn es nicht mal eine Möglichkeit gibt, am Ende festzustellen wie viele false positives dein Filter ausgelöst hat, ist der "Test" m.E. komplett sinnfrei.

Hier ging's auch nicht darum zu schauen, wie toll der Spamfilter funktioniert, sondern ob der Spamfilter Spambots erfolgreich abhält. Außerdem läßt sich am Ende aus der Datenbank berechnen, wie viele Einträge abgewiesen wurden, allerdings nicht, ob zu Recht oder nicht.

 
Silkeyes
05-10-2006, 14:14 
 
So, ich antworte dann mal erst wieder heute abend, ich bin gerade eh sauer (das liegt jetzt nicht an Euch, irgendein Depp will sich bei Ebay vorm Bezahlen drücken).

Ich hoffe onemorenerd nimmt sich noch des Spambooks an.

 
wahsaga
05-10-2006, 14:25 
 
Original geschrieben von Silkeyes
Hier ging's auch nicht darum zu schauen, wie toll der Spamfilter funktioniert, sondern ob der Spamfilter Spambots erfolgreich abhält.
Ist ein Spamfilter für dich "erfolgreich", wenn er auch nicht-Spam abweist?
Außerdem läßt sich am Ende aus der Datenbank berechnen, wie viele Einträge abgewiesen wurden, allerdings nicht, ob zu Recht oder nicht.
Dann ist die Zahl ziemlich wertlos.

 
Marcusson
05-10-2006, 15:40 
 
Original geschrieben von Silkeyes
Okay, Dein Textbrowser sendet keinen standardkonformen HTTP HEADER.

Der "Textbrowser" ist Firefox im Textmodus und der HTTP-Header ist sowas von Standard, wie er nur sein kann.

Schreib' dir mal 'n paar ordentliche Logs! Sonst ist die ganze Testerei für die Katz'.

 
Silkeyes
06-10-2006, 04:47 
 
Original geschrieben von Marcusson
Der "Textbrowser" ist Firefox im Textmodus und der HTTP-Header ist sowas von Standard, wie er nur sein kann.

Schreib' dir mal 'n paar ordentliche Logs! Sonst ist die ganze Testerei für die Katz'.

Hast zwar Unrecht aber egal. Ich kopiere Dir mal die Zeile aus dem Quellcode, die für den Fehler Nr.0 sorgt:

if ($_SERVER['HTTP_REFERER'] != 'http://www.expressiveeyes.com/spamalot/index.php')
{
die('Fehler Nummer 0'); // bad referrer
}


Tja und hier die vollständige Liste der Fehlermeldungen und was diese bedeuten (sorry onemorenerd, damit ist mindestens der halbe Spaß vorbei):

0: Referrer falsch
1: GET Array ungültig
2: POST Array ungültig
3: email Variable ungültig
4: keine passende ID zur aktuellen IP gefunden
5: Zeitlimit über- bzw. unterschritten
6: name Variable zu lang
7: IP wiederbenutzt
8: Browser unbekannt

Fehler Nr. 7 habe ich abgeschaltet, d.h. irgendjemandes Bruder muß nicht mehr traurig sein.

Ich find's aber spaßig, daß hier fast jeder Probleme hat etwas einzutragen, ich hab's mit IE, Firefox, Opera und Konqueror jeweil auf Windows und Linux probiert (sofern vorhanden) und es hat _immer_ geklappt. Ich bekomm sicher meinen Browser auch so tot konfiguriert, daß der sich kaum noch an einen Standard hält, aber dann erwarte ich nicht, daß Internetseiten problemlos funktionieren...

 
onemorenerd
06-10-2006, 08:26 
 
Ich hatte (und habe immernoch) wenig Zeit. Aber wie ich sehe, haben ja andere die Spielerei mitgemacht.

Nach dem Überfliegen des Threads sieht es wohl so aus:
Da du nicht umfassend geloggt hast, kann jetzt leider keiner sagen, wie gut oder schlecht der Algorithmus ist, wieviele Einträge zurecht oder unrecht abgelehnt wurden.
Allerdings ist aufgefallen, dass das IP-Blocken (Fehler 7) eher - oder zumindest [i]auch[i] - User aussperrt.
Weiterhin wurden Fehler geworfen (ich erinnere mich an Fehler 0), die du selbst so nicht erwartet hast. Das deutet an, dass du nicht alle Eventualitäten (Browser, Settings, Eingaben, Verhalten) bedacht hast oder dass du sie fälschlicherweise als Erkennungsmerkmal von Spambots ansiehst.

Marcussons OS-Argument möchte ich noch einmal aufgreifen: Selbst wenn wir den Quelltext kennen, sollte spammen unmöglich sein. Also her damit.

 
wahsaga
06-10-2006, 09:12 
 
Original geschrieben von Silkeyes
0: Referrer falsch
Aua.
8: Browser unbekannt
Aua.

 
Silkeyes
06-10-2006, 09:33 
 
Original geschrieben von onemorenerd
...
Allerdings ist aufgefallen, dass das IP-Blocken (Fehler 7) eher - oder zumindest [i]auch[i] - User aussperrt.
Weiterhin wurden Fehler geworfen (ich erinnere mich an Fehler 0), die du selbst so nicht erwartet hast. Das deutet an, dass du nicht alle Eventualitäten (Browser, Settings, Eingaben, Verhalten) bedacht hast oder dass du sie fälschlicherweise als Erkennungsmerkmal von Spambots ansiehst.
...


Fehler 7 sperrt User nur dann aus, wenn sie die gleiche IP haben, also in größeren Netzwerken hinter einem Router. Ich glaube, in der Regel ist das nicht der Fall. Aber darüber kann man sich natürlich streiten.

Also ich habe den Fehler schon erwartet, sonst gäbe es ja keine Fehlermeldung. ;-)

Ich habe mich da einfach an Deine Beschreibung des "schlauen" Spambots gehalten, der gar keine Lust hat, das Formular auszufüllen sondern gleich alles fröhlich am den Handler sendet. Der müßte mindestens also den Referrer fälschen, damit er das kann. Ich habe natürlich jetzt nicht recherschiert, welcher Browser dabei nicht mitmacht (FF macht da mit, jedenfalls meiner und der ist nichts Besonderes) aber Steganos' Anonimizer würde damit ausgesperrt. Aber als anonymer User Gästebucheinträge schreiben sieht ja schon sehr nach Spambot aus.

Natürlich hab ich nicht alle Eventualitäten bedacht, ich halte Dich für schlau genug, daß ich das mal als Polemik verstehe.

Kann ich nochmal das Wochenende haben ? Dann hat das Spambook Logs und eine Statistik und keiner muß seinen Router ein- und ausschalten.

Ich verstehe zwar den Einwand gegenüber der Open Source Geschichte, aber ich halte es für recht witzlos, wenn man die Gegenheiten der Routine kennt, einen Spambot darauf abzurichten, genau diese Grenzen zu beachten. D.h. Quellcode gibt's nicht, jedenfalls nicht im Vorfeld. Natürlich müßte ein ein marktreifes System auch mit offenem Quellcode Spambots standhalten keine Frage, aber bedenke mal, daß das hier nur zum Spaß ist und ich gerade mal 2 Nächte damit zugebracht habe.

 
Trashar
08-10-2006, 10:22 
 
so hab nun gleich auf absenden bekommen..
Kamm fehler nr 5.. kann man verstehen (Flash Gordon)

Dann auf zurück, einmal F5, dann nen tollen langen text geschrieben und dann kam Fehler nr 4..

oO

 
Silkeyes
08-10-2006, 13:28 
 
Original geschrieben von Trashar
so hab nun gleich auf absenden bekommen..
Kamm fehler nr 5.. kann man verstehen (Flash Gordon)

Dann auf zurück, einmal F5, dann nen tollen langen text geschrieben und dann kam Fehler nr 4..

oO

Wenn Du von der Fehlerseite zurückgehst und auf der Formularseite keinen Reload durchführst, erhält das Formular noch Deine alte ID, die natürlich verfallen ist, wenn Du damit nochmal eintragen willst. Sagt Dir One-Time-Pad etwas ?

-archiv-

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:03 Uhr.