Guestbook Spam Problem
grOOvekill@ 14.12.2005 - 17:28 1881 10
grOOvekill@
LegendVienna Badass
|
S'gott, folgendes: Ich habe für die Band eines Freundes eine Website gebastelt, die ein Guestbook enthält. Seit zwei Wochen erstellt irgendein Wahnsinniger ständig Einträge dieser Art: Good job guys! Very nice site! side effects of zoloft: http://zoloft.fb.bz/ zoloft side effects; buy valium: http://valium-online.fb.bz/ valium online; buy lortab: http://lortab.fb.bz/ lortab online; buy didrex: http://didrex.fb.bz/ didrex; diazepam suicide: http://diazepam-online.fb.bz/ diazepam; viagra: http://cheap-viagra-online.fb.bz/ buy viagra; tamiflu: http://tamiflu.ca.tf/ buy tamiflu; buy cialis: http://cialis.ca.tf/ cialis online; levitra: http://levitra.ca.tf/ order levitra; ambien: http://ambien.ca.tf/ cheap ambien; Ich brauch wohl nicht zu erwähnen, dass das ständige Löschen dieser bescheuerten Einträge langsam ein ziemliches Pain in the ass wird. Nun habe ich mir überlegt, welche Methoden es geben könnte, wie man diesem Spinner das Handwerk legen könnte, ohne dabei auf das Guestbook zu verzichten. - Die Namen, die er verwendet, sammeln und irgendwann beim Auslesen der Einträge aus der DB ausfiltern? Ist natürlich Essig, wenn er einfach immer andere Namen verwendet. - Seine IP speichern und ihn dann irgendwie bannen? Aber wie? Geht natürlich auch nur dann, wenn er eine statische IP-Adresse hat. Kurzum: Ich suche nach einem Weg, wie ich dieses Guestbook vor Mißbrauch schützen kann oder es solchen Idioten schwerer mache, diese Einträge zu verfassen, bis sie hoffentlich irgendwann mal aufgeben. Irgendwelche brauchbaren Ideen? tia
Bearbeitet von grOOvekill@ am 15.12.2005, 11:23
|
Spikx
My Little Pwny
|
Code-aus-Bild-Eingabe Für den Anfang reicht wahrscheinlich auch eine direkte Anzeige des Codes Nur geht das halt zu Lasten der normalen Besucher...
|
Phobos
✝
|
ist es ein php guestbook? für ein guestbook interessant wäre natürlich eine gültige email adresse eingeben zu müssen oder zb. einfach ein login einzubauen. macht er immer die selben einträge? könntest natürlich gewisse wörter oder sätze sperren... log einfach mal seine IP mit, kannst ja mal seinen provider herausfinden.
|
Tex
got r00t?
|
ich hab genau das gleiche problem. auch in einem guestbook einer befreundeten band. exakt die selbe art von einträgen. ich werd's wohl erstmal so lösen, dass ich einträge herausfiltere, die wörter wie "diazepam", "cialis", "viagra" enthalten. code-aus-bild-eingabe möchte ich eigentlich nicht machen. edit: bei mir haben die einträge erst heute in der nacht angefangen. die aktuellen logfiles bekomme ich erst am ende des tages - vielleicht hat er ja immer die gleiche ip. dann wäre es kein problem.
Bearbeitet von Tex am 14.12.2005, 17:44
|
daisho
SHODAN
|
Eventuell Beiträge mit URLs im Test gleich aussondern? Ansonsten Word-Blacklist, IP Filter ( ganzen Provider würde ich nicht bannen ) ... Diese Filter können natürlich auch andere Einträge löschen...
|
Tex
got r00t?
|
Diese Filter können natürlich auch andere Einträge löschen... ja, aber über diazepam, levitra und konsorten wird in einem band-guestbook eigentlich nicht disskutiert man könnte es ja so machen: einträge, die wörter aus der black-list enthalten werden nur nach code-aus-bild-eingabe übernommen. so werd' ich das wohl am wochenende mal coden. edit: die code-aus-bild-eingabe-teile heißen übrigens captcha. siehe: http://de.wikipedia.org/wiki/Captcha
Bearbeitet von Tex am 14.12.2005, 18:06
|
grOOvekill@
LegendVienna Badass
|
ich werd's wohl erstmal so lösen, dass ich einträge herausfiltere, die wörter wie "diazepam", "cialis", "viagra" enthalten. Ich gehe mal davon aus, dass die Filterung vor dem Insert in die DB stattfindet, oder? Wär ja schwachsinnig, den Datensatz anzulegen, nur um ihn bei der Ausgabe auszufiltern. Richtig? Richtig? edit: So, Problem gelöst! Hier mein Ansatz: $checkString = md5(microtime());
$pregWhat = array('/bösesWort/', '/bösesWort/');
$pregThat = array($checkString, $checkString);
$tempText = strtolower($text);
$tempText = preg_replace($pregWhat, $pregThat, $tempText);
$pos = strpos ($tempText, $checkString);
if ($pos === false) {
$insert = "INSERT INTO gb ( gb_id,..) values( $id,.. );";
}
else {echo "Go and get fu**ed you piece a shi*!!";}
Funktioniert auf jeden Fall bestens!
Bearbeitet von grOOvekill@ am 15.12.2005, 11:22
|
Phobos
✝
|
vorallem die ausgabe wenn ein bad word drinnen ist find ich sehr ellegant
|
grOOvekill@
LegendVienna Badass
|
vorallem die ausgabe wenn ein bad word drinnen ist find ich sehr ellegant Naja, warum ausfallend werden, wenn man es auch so sachlich formulieren kann?
|
Tex
got r00t?
|
Richtig? Richtig? richtig! ich hab's jetzt erstmal so gemacht, dass ich die eintragen.php in einen kryptischen namen umbenannt + eine robots.txt erstellt habe, die ein listing in den suchmaschinen verhindern soll. bis jetzt hatte ich keine weiteren spam-einträge. ansonsten kommt bad-word-filter + captcha, falls jemand ein bad word eingeben möchte.
|
nr1
Here to stay
|
ich würde nicht unbedingt probieren solche User auszusperren, sondern mal ein Mail an den Provider desjenigen schicken. Logge die IP mit, dann geh auf http://www.ripe.net/perl/whois und lass dir auslesen woher der kommt. Dann schick eine Mail an den Provider, im normalfall sind die dort eh kooperativ und geben dir die eMail, bzw schicken dem Spaßvogel selbst was
|