Open top menu

WordPress Spam Reduzierung mittels .htaccess

Wenn mich hier im Blog eins aufregt, dann ist das der Spam. Im Schnitt kommen hier inzwischen pro Tag 100 Spam-Kommentare angeflogen, die die Antispam-Bee von Sergej sorgfältig aussortiert. „Früher“ als der Rasen noch grüner und der Himmel blauer war, habe ich regelmäßig durch den Spam-Ordner geblättert, um zu sehen, ob nicht irrtümlich etwas dort gelandet ist, was da nicht hingehört. Bei 100 neuen Einträgen am Tag kommt man allerdings inzwischen in einen Bereich wo man sich überlegen kann: Spam durchsuchen oder neuen Blog-Beitrag schreiben. Letzteres gewinnt in der Regel.

Screenshot von WpRecipes

Screenshot von WpRecipes

Bei WpRecipes ist jetzt eine Regel für mod_rewrite aufgetaucht, die einen großen Teil des Spams verhindern soll:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

Was macht das „Skript“? Es schaut nach ob der Referer bei einem Post auf die wp-comments.post.php wirklich das Blog ist, und nicht irgendwas. Warum macht es das? Bots posten automatisiert auf die Datei, ohne sich das Blog vorher „anzuschauen“ oder im eigentlichen Sinne die Seite mit dem Kommentar-Formular überhaupt zu sehen, besitzen also keinen Referer der auf das entsprechende Blog verweist.

Die Methode ist nicht unbedingt neu, und auch nicht der Weisheit letzter Schluss, schafft es aber ein Großteil der Bots davon abzuhalten überhaupt etwas zu posten. Stattdessen bekommen die Teile ein 301 und wenn sie intelligent genug sind, kommen sie danach nie wieder.

Wie gesagt, nur ein Teil des Spams: man muss trotzdem weiterhin die Anti-Spam-Module in WordPress installieren, aber man muss sagen: einen Bot per .htaccess rauszuwerfen ist natürlich wesentlich effizienter als erst noch mit PHP zu ermitteln, ob er posten darf oder nicht. Falls ihr das Skript verwendet: bitte genau testen und natürlich yourdomainname durch den eigenen Domain-Namen ersetzen.

Keywords
Guido
Geschrieben von Guido

Guido Mühlwitz ist Freiberufler mit Schwerpunkt HTML5, Zend Framework 2 / Node.js und individueller WordPress Plugin Entwicklung. Wenn er sich nicht gerade bei Twitter über PHP aufregt, bloggt er über aktuelle Themen aus dem Bereich der Anwendungsentwicklung.

7 Antworten auf Kommentar

  1. Avatar
    September 12, 2011

    Ein hässliches zweischneidiges Schwert ist das. PHP erzeugt noch immer einiges an Serverlast beim Aussortieren des Spams und bei der Menge die man täglich bekommt ist das tatsächlich relevant. Was wäre da einfacher als direkt den Apache entscheiden zu lassen, aber das Referer Problem ist nicht zu unterschätzen.
    Ich nutze deshalb lieber die PHP Variante, dazu auch Kompliment an Sergej, Antispam Bee summt fleißig und fehlerfrei.^^ Hauptsächlich filtert das den Spam, der nicht deutschsprachig ist raus, das reicht schon. Damit sind auch alle Referer Probleme beseitigt.
    Ich kombiniere das aber noch mit der Simple Trackback Validation.

    Antwort

  2. Avatar
    August 31, 2011

    Auf jeden Fall gut zu gebrauchen wenn mal wieder eine massive Attacke kommt, Antispam-Bee kannte ich noch gar nicht, sieht interessant aus. Danke!

    Antwort

  3. Avatar
    August 31, 2011

    Jepp, Balu hat Recht. Es sind zu viele Menschen mit einer Referee-Unterdrückung unterwegs. Auch wenn es wenige sind (es werden aber immer mehr), halte ich die Technik für nicht einsatzfähig. Dann lieber einem Plugin die AntiSpam-Sache anvertrauen ;)

    Antwort

  4. Avatar
    August 31, 2011

    Müssten man mal beobachten wieviel normale Kommentare dadurch verschüttet gehen, den es gibt auch viele normal User die keinen Referer übertragen. Ich weiß jetzt auch nicht ob man das zum Beispiel auch bei so AdsBlock Plugins nicht auch teilweise einstellen kann.

    Antwort

  5. Avatar
    August 31, 2011

    Damit wirfst Du aber leider auch die Besucher raus, deren Firmenproxy z.B. den Referrer löscht. Es gibt Firmen, die machen sowas aus Datenschutzgründen, etc.

    Ich glaube, auch manche Personal Firewalls haben diese Option…

    Antwort

    • Avatar
      August 31, 2011

      Stimmt wohl, aber das gleiche Problem hat man mit einem reinen Spam-Filter auch, denn theoretisch müsste man kontrollieren was da so als Spam markiert wird – das ist nämlich auch nicht immer sauber :)

      Antwort

Leave a comment