Der Codefreak hat ein WP-Plugin geschrieben, mit dem sich der Trackbackspam besser moderieren lässt.
Es prüft, ob der Host der das Trackback/Pingback ausführt auch der Host ist, welcher in der URL des Trackback-Posts verlinkt werden soll. Da Spammer offene Proxys benutzen, die natürlich nicht die dort angegebene Webseite hosten, fallen sie hier negativ auf.
Trackback Host Verification Version 0.2
Wieder mal bei Mathias gefunden, eine kurze Lösung bei TB-Spam in WP.
Man öffnet die wp-trackback.php mit einem einfachen Texteditor. Dort suchen wir nach folgendem Code:
if(check_comment($author, $email, $url, $comment, $user_ip)) {
$approved = 1;
} else {
$approved = 0;
}
Das sind die Zeilen 69 -73 in der Originaldatei. Jetzt schauen wir genauer hin und suchen darin den Ausdruck $approved = 1; Diesen Wert setzen wir nun genauso, wie es zwei Zeilen tiefer steht, auf Null. Der ganze Block müsste jetzt in etwa so aussehen:
if(check_comment($author, $email, $url, $comment, $user_ip)) {
$approved = 0;
} else {
$approved = 0;
}
Soweit der Ansatz von Mathias. Wer ganz auf Trackback verzichten möchte, benennt einfach die Datei wp-trackback.php nach wp-trackback.php.bak um und das wars dann mit jeder Form von Trackback.
zumindest was meine Lösung des Spamproblems für WP betraf. Die Spammer haben es durchschaut und ihre Scripte parsen erst die Seite und lesen so Name und Value aus.
Auch das Ändern der Werte bringt nur etwa 20 min. Ruhe.
Ich bin gerade am überlegen was man jetzt noch tun kann ohne das der Leser was tun muß. Eine sichere Lösung, die leider JS beim Leser voraussetzt fand ich bei Mathias.
Es ist das Plugin wp-hashcash von Matthew Mullenweg, dem Entwickler von WordPress.
Perun hat eine Maillingliste gegen Blogsam "geschaffen".
Thema der Liste
Die Liste richtet sich an alle Betreiber von Weblogs, Wikis, Foren etc. die Probleme mit Spam und Trollen auf ihren Präsenzen haben. Evtl. rechtliche Aspekte können auch diskutiert werden. Falls nötig, können wir das Themenspektrum erweitern bzw. an aktuelle Begebenheiten anpassen.
Also, eintragen.
gibt es bei www.kritische-masse.de.
Das sollte schon die meisten der aktuellen Spammer aussperren.
Achja, die Liste.
Mit der von Stebu beschriebenen Methode (verstecktes Input-Feld)
lässt sich Kommentar-Spam zweifelsfrei erkennen. Die Frage ist,
ob wir in die Offensive gehen wollen?
Damit meine ich beispielsweise das sinnlose und massenhafte
Aufrufen der Spammer-URL. Das wäre mit PHP problemlos möglich.
Allerdings stellt sich hier die Frage, ob wir uns in einer
rechtlichen Grauzone bewegen?
Link: http://www.heise.de/newsticker/meldung/53689
Weitere Aspekte:
1.) Wie schützt man derartige Funktionalitäten vor Mißbrauch?
2.) Gefährdet man die eigene IT-Infrastruktur?
3.) Wie kann der "Erfolg" solcher Aktionen gemessen werden?
4.) Trifft man überhaupt die "Richtigen"?
5.) Welche besseren Alternativen gibt es?
Nchfolgender Code in der Datei wp-comments-post.php (wieder gleich am Anfang) verhindert das Kommentare über offene Proxys gemacht werden. Offene Proxys werden gerne von Spammern genutzt.
$spammer_ip = $_SERVER[’REMOTE_ADDR’];
list($a, $b, $c, $d) = split(’.', $spammer_ip);
if( gethostbyname("$d.$c.$b.$a.list.dsbl.org") != “$d.$c.$b.$a.list.dsbl.org") {
header( “Location: http://dsbl.org/listing?".$spammer_ip);
return false;
}
Das ganze gibt es auch als plugin für WP http://weblog.sinteur.com/index.php?p=8106
Dieser Trick sollte eigentlich in allen Blogs gehen.
<?php
$badips = array("123.123.123.123", "321.321.321.321"....);//ein Array mit zu sperrenden IP-Adressen
if (in_array ($_SERVER['REMOTE_ADDR'], $badips))
{
header("Location: http://wohinauchimmer.tld/");
exit();
}
?>
oder besser, die Anfrage gleich zurück schicken.
header("Location: $_SERVER['REMOTE_ADDR']");
Eine einfache Variante ist folgende:
In der Datei wp-comments.php ein weiteres Inputfeld vom Typ “hidden” einbauen:
<input type="hidden" name="spamprotect" value="spamsucks" />
Name und value sind frei wählbar.
In der Datei wp-comments-post.php wird dann(am Anfang) ausgewertet ob das Feld mit dem Value da ist und wenn nicht einfach mit exit; der Ablauf beendet.
if($_POST['spamprotect'] != 'spamsucks')
{
$file = ’spam/spamcnt.php’ ;
$fh = fopen ($file, “r+");
$cnt = fgets($fh, 1024);
$cnt++;
rewind($fh);
fputs($fh,$cnt);
fclose ($fh);
exit;
}
Als kleines Extra schreibe ich hier noch alle geblockten Versuche mit und lese sie dann aus. Etwas Schadenfreude gönne ich mir da schon.



