Kommentar-Spam wirksam entfernen

17. November 2007 – 19:55

Jeden Tag bekomme ich von Spam Karma 2 Mails mit Inhalten wie diesen:

There have been 46 comment spams caught since the last digest report 1 Tag ago.

Es ist gut, dass das Plugin so gut den Müll abfängt jedoch muss ich das ständig selbst aus der Datenbank löschen und das Blocken der IPs bringt auch nicht mehr viel. Daher habe ich jetzt die Rambo-Methode benutzt um dem Spam endlich den gar aus zu machen.

Meist enthalten die Mails nur ein Wort wie “Nice”, “Sorry” oder “Interesting”, manchmal noch ein paar Punkte dazu. Da sich die Spammer so dumm anstellen kann man sie einfach blocken:

Öffne Datei /wp-comments-post.php

Finde diesen Code (Zeile 30 bei WP 2.2.3):

$comment_content      = trim($_POST['comment']);

Füge darunter ein:

$spam_words = array('Nice', 'nice', 'Sorry', 'sorry', 'Interesting', 'interesting', 'Cool', 'cool');
foreach ( $spam_words as $word )
{
	if ( $comment_content == $word ) die('You suck!');
	if ( substr($comment_content, 0, strlen($word)) == $word ) die('You suck!');
}

Mal schauen ob Spam Karma ruhiger wird, das Ergebnis seh ich spätestens beim nächsten Bericht.

// Update:
Auf Anregung von BadBoy_ hier eine verbesserte Version:

$spam_words = array('nice', 'sorry', 'interesting', 'cool');
$as_comment = strtolower($comment_content);
foreach ( $spam_words as $word )
{
	if ( $as_comment == $word ) die('You suck!');
	if ( substr($as_comment, 0, strlen($word)) == $word ) die('You suck!');
}

Wieso eine extra Variable? Falls der Kommentar doch durchgehen sollte, wäre er komplett klein geschrieben. ;)

  1. 12 Kommentare zu “Kommentar-Spam wirksam entfernen”

  2. schlauerweise kannste noch nen
    $comment_content = strtolower($comment_content); nach dem öffnenden { der foreach schleife setzen und schon brauchste in dem array alle “Spamwörter” nur in kleinbuchstaben angeben (erspart dir die doppelten einträge)

    geschrieben von BadBoy_ am 17. Nov, 2007

  3. Gute Idee, werd ich in Teilen auch umsetzen, aber:
    - Vor die öffnende Klammer, da sonst bei jeder Runde der Kommentar verkleinert wird was unnötig ist
    - Sollte dann in eine extra Variable, da sonst, wenn der Kommentar kein Spam ist, er auch in Kleinschreibung in die Datenbank geschrieben wird

    geschrieben von Michael am 17. Nov, 2007

  4. Oder mit regular expressions wirds noch ein wenig übersichtlicher, nach dem $comment_content = trim($_POST['comment']); einfach folgendes einfügen:

    if(preg_match(’/^(nice|sorry|interesting|cool)/si’, $comment_content))
    {
    die(’You suck!’);
    }

    Damit wird jeweils ge-”die”-t wenn der Kommentar mit einer der Wörter anfängt, case insensitive - und beliebig erweiterbar. Nur aufpassen dass sinnvolle Kommentare nicht mit einem dieser Wörter anfangen :-)

    geschrieben von Lili am 17. Nov, 2007

  5. ;), jo stimmt, hab garnet drangedacht dass das ja auch noch in die DB muss :P

    geschrieben von BadBoy_ am 17. Nov, 2007

  6. und wenn ich jetzt wörter wie cool einsetzen will? weil es ja ein völlig normales wort ist? zB “ich find diese idee sau cool” oder “sorry, aber diese anleitung scheint nicht so recht zu funktionieren”

    geschrieben von FearOfTheDark am 18. Nov, 2007

  7. Die Methode schaut nur ob das Wort das erste Wort eines Kommentares ist, kannst ja deine Leser drauf hinweisen. ;)

    Aktuelle Statistik: 0 neue Spams seit gestern, also um 100% reduziert =)

    geschrieben von Michael am 18. Nov, 2007

  8. naja, nicht jeder spambot fängt mit diesen wörtern an ;) ansonsten programm ier ich mir meinen jetzt um :-D *evil*

    geschrieben von FearOfTheDark am 19. Nov, 2007

  9. Soll ich dir mal die Zusammenfassungen zuschicken? Sämtlicher Spam begann mit genau diesen Wörtern :P

    geschrieben von Michael am 19. Nov, 2007

  10. komisch, bei mir is das ned so ;)

    geschrieben von FearOfTheDark am 20. Nov, 2007

  11. Tja, ich bekomm die dämlicheren Spammer ab :mrgreen:

    geschrieben von Michael am 20. Nov, 2007

  12. vllt sollte ich mal genauer analysieren, was die spambots auf meiner hp schreiben^^

    > ich bekomm die dämlicheren Spammer ab
    muss an dir liegen :-D

    geschrieben von FearOfTheDark am 21. Nov, 2007

  13. So ein Glück, das ich so ein Prob. nicht habe. Und Dotclear benutze *G*.

    geschrieben von Flho5 am 29. Nov, 2007

Kommentar schreiben