Posts Tagged ‘Kommentar’

Montag, 24. Dezember 2007

Umzug auf Wordpress geglückt!

16:10 Uhr 2 Kommentare

Ich habe ja schon vor einiger Zeit angekündigt, dass ich von meiner selbst geschriebenen Blog-Software auf Wordpress umsteigen wollte. Hintergründe waren, daß mir die Zeit fehlte, meine eigene Sache weiter zu pflegen und normale Standards einzuplegen, die zu einer Blogsoftware gehören und Lücken und Fehler zu stopfen.

Seit gestern ist nun das Blog im alten Gewand aber neuer Wordpress Engine online. Die alte Gallery bleibt erhalten und ich hoffe, daß die alten Links zu den Beiträgen weiterhin funktionieren. Bezeichnend ist es aber, daß ich mitte 2007 einen Artikel gepostet habe, wie man Kommentar-Spam am effektivesten Abwehren kann und ich nach fünf Minuten Wordpress einen Spam-Kommentar reingedrückt bekomme. Ich sollte wohl nach meinen eigenen Ideen zur Spamabwehr ein Plugin basteln, wenn ich mich darin eingelesen habe.

Für mich fühlt es sich aber an, als wenn das Blog durch Wordpress merklich langsamer geworden ist. Mag sein, daß ich es mir einbilde, mag aber auch sein, daß es an den ganzen Plugins liegt, die nötig sind, um meine alten Funktionalitäten wiederzuerlangen. An Plugins habe ich im Moment folgendes installiert:

  • Akismet (zur Spamabwehr)
  • Domain Mirror (da diese Seite über mehrere Domains erreichbar ist)
  • Google XML Sitemaps
  • Gravatar 2
  • Lightbox 2 (vorher über Mootools realisiert)
  • Mail From (damit abgehende Mails einen anderen Absender haben)
  • Clean Umlauts (Excerpts werden den deutschen Verhältnissen angepasst)
  • Postie (bloggen per eMail)
  • Redirections (einige alte, nicht mehr vorhandene Links werden auf neue Seiten umgelenkt)
  • Semmelstatz (Statistiken - bei mir jetzt die dritte Variante :neutral: )
  • Simple Tags (alle neuen Einträge werden nicht nur in Kategorien eingeteilt, sondern auch getaggt)
  • Subscribe to Comments (man wird bei weiteren Kommentaren zu beiträgen per eMail informiert)
  • Polls (Abstimmungen und Meinungsumfragen leicht gemacht)
  • WPG2 (zur Integration der Gallery)
  • WP Grins (damit Smileys einfach in den Kommentar eingefügt werden können)

Das Theme hat wahrscheinlich noch ein paar Ecken und Kanten und sieht nicht überall wie vorher aus. Wenn Anregungen und Tipps abzugeben sind, dann immer her damit.

Damit auch noch eine neue Funktion zum Einsatz kommt, starte ich direkt mal eine Umfrage :grin:

Fahrzeit zur Arbeit

View Results

Loading ... Loading ...
Donnerstag, 7. Juni 2007

Fight the Kommentar-Spam - Teil 2 - X-tended Version

09:59 Uhr 6 Kommentare

Wie im vorherigen Beitrag beschrieben, sind Spambots extrem dumm, bzw. der Programmierer dieser hat in den Code der Bots nicht ausreichend Hirnschmalz gesteckt. Ist in der Regel auch nicht nötig, da Kommentarfelder und Gästebuchformulare sehr einfach aufgebaut sind.

Die hier nun weiter beschriebene Möglichkeit stammt nicht aus meiner Feder, sondern von dem Ersteller des Grundgerüsts meines Weblog-Systems Andreas Ahlenstorf. Vielen Dank nochmals, für diese - seit zwei Jahren - gut funktionierende Idee! Und es ist wieder nur ein Fingerzeig, wie man an das Thema herangehen kann und keine fertige Plugin Lösung. Falls jemand eine coded, egal für welches Weblogsystem, bin ich bereit, diese hier gern zu verlinken oder zu veröffentlichen.

Also, um es nochmals zu wiederholen und zusammenzufassen. Spambots sind dumm und füllen alles aus, was denen unterkommt. Spambots beherrschen aber keine Cookies und somit auch keine Sessions. Um es einfach auszudrücken, Spambots nehmen keine laufenden Daten mit, wenn diese auf deiner Webseite von einer Seite zur nächsten wandern.

Diese Tatsache ließ die Idee aufkommen, daß man den Input-Feldern nicht mehr den gleichen Namen, wie z. B. “author”, “commenttext”, “email” oder “website”, sondern diesen immer wieder ändernde Hashwerte gibt, welche erst über eine Session ihrer richtigen Bedeutung, wie “author”, “website”, etc. zugeordnet wird. Das alles zur Veranschaulichung in ein kleines Beispiel gepackt. Vorher sah es immer so aus:

<input type=”text” name=”author” />

Über name=”author” wird in dem dahinter liegenden Skript, welches dann den Kommentar wegspeichert, eine eindeutige Zuordnung hergestellt. Bei mir sieht es dagegen so aus:

<input type=”text” name=”79bb89ba1bb6fbc26af7b31198731d10f85cefa8″ />

Der Zufallswert hinter name= ändert sich bei jedem Aufruf der Seite, die das Kommentarfeld aufweist. Eine eindeutige, wiederkehrende Zuordnung ist also nicht gegeben. Da dies aber nötig ist, um den Inhalt auch richtig speichern zu können, wird bei mir in der Session diese Zuordnung hinterlegt, so daß beim abschicken des Kommentares erst einmal in der Sessionvariable “nachgeschaut” wird, daß z. B. der Input-Feld-Name 79bb89ba1bb6fbc26af7b31198731d10f85cefa8 für das Feld Author steht.

Ein Spambot, der keine Cookies beherrscht und somit auch die Session nicht mitführt, kann somit keinen Kommentar abgeben. Leider aber auch kein menschlicher Kommentator, der Cookies in seinem Webbrowser abgeschaltet hat. Aber kollaterale Schäden gibt es immer ;)

Diese o. g. Hashwerte müssen für jedes Kommentarfeld erstellt, in der Session hinterlegt werden und eindeutig sein. Mit PHP erstellt man diesen eindeutigen Hashwert so:

sha1(uniqid(rand(), true));

Diesen, bzw. da man es ja für alle Inputfelder erstellen muß, diese Hashwerte sichert man dann in der Session, z. B. wie hier:

$_SESSION[‘field‘][‘author‘] = sha1(uniqid(rand(), true));
$_SESSION[‘field‘][‘email‘] = sha1(uniqid(rand(), true));
$_SESSION[‘field‘][‘website‘] = sha1(uniqid(rand(), true));
$_SESSION[‘field‘][‘comment‘] = sha1(uniqid(rand(), true));

und gibt diese, logischerweise, seinem Webseiten-Template mit, damit dieses diese dann anstelle von “author”, “email”, etc. einfügt.

Wird nun ein Kommentar abgegeben, muß nun zwingend eine Session vorhanden sein. Ist diese nicht da, ist es mit ziemlicher Sicherheit ein Spambot. Wenn es kein Bot ist, also die Session vorhanden ist, geht man beim speichern den umgekehrten Weg und ordnet den Hashwerten wieder die eindeutige Bedeutung zu. Hier ein beispielhafter PHP-Auszug, nur für das Author-Feld:

if (empty($_SESSION['fields']['author'])) {
echo “Possible Spam”;
exit;
}

if (!isset($_REQUEST[$_SESSION['fields']['author']])) {
echo “Possible Spam”;
exit;
}

$request_vars['author'] = strip_tags($_REQUEST[$_SESSION['fields']['author']]);

Soweit alles verstanden, was ich meine? Ich bin leider nicht der “Erklärbär”, aber ich möchte auch nur einen Ansatz geben, wie man noch gegen Kommentarspam vorgehen kann ohne den normalen Besucher unnötig zu belästigen. Und gegen Tipps, wie ich den Artikel auffrischen kann, bin ich auch dankbar.

Wer hieraus ein Plugin für eines der bekannten Weblogsysteme erstellt, soll sich bitte melden.

Fight the Kommetar-Spam - die sehr sehr einfache Methode

08:44 Uhr 16 Kommentare

Der Admartinator und der Christoph wollen von mir ein Tutorial haben, wie man den Kommentarspam sich vom Leib halten kann. Bei den beiden ist / war es nötig, eine kleine, simple Matheaufgabe zu lösen, wenn man seinen Kommentar abgeben wollte. Hintergrund ist der, daß Spambots fleissig Formulare ausfüllen können, aber den Zusammenhang nicht erkennen, was genau in diese Formulare soll. Daher wird der Kommentar nur angenommen, wenn die Aufgabe richtig gelöst wurde. Dies hat aber den Nachteil, daß der Kommentator an diese Methode gewöhnen muß und dadurch evtl. überfordert sein kann (ja, Kommentatoren können auch dumm sein - fast wie Spambots ;) )

Ich möchte hier eine sehr simple Methode beschreiben, wie bei mir Spam-Kommentare im Blog erkannt werden. Am Ende ergibt dies kein fertiges Wordpress-Plugin, oder eine Anleitung wie man so ein Plugin für seinen Blog coded, sondern es soll mehr ein Fingerzeig sein, wie man die (momentanen) Schwächen des Spambots zu seinem Vorteil ausnutzen kann.

Wie weiter oben schon angedeutet, sind Spambots dumm wie Brot - eigentlich noch dümmer. Deren einziger Sinn und Zweck ist es, in deinem Blog Kommentare zu hinterlassen, wie gefüllt sind mit Links zu irgendwelchen Webseiten, die Viagra oder sonstiges verkaufen. Findet also dieser Spambot eine Möglichkeit einen Kommentar zu hinterlassen, dann macht der das auch in aller Gründlichkeit, indem er alle vorhandenen Felder ausfüllt, wie z. B. Name, eMail-Adresse, Webseite und auch einen ausgiebigen Kommentar gibt er ab.

Na, aufgepasst? Er füllt alle Felder aus! Alle, die er findet. Nachteil des Spambots ist, was unser Vorteil sein kann, daß er -
soweit ich weiß - kein CSS kann. Bei mir ist es so, daß bei den Kommentaren ein weiteres Feld vorhanden ist, daß der normale, lebendige Kommentator nicht sieht, aber der Spambot fleissig ausfüllt.

<input class=”feld” type=”text” name=”megatext” size=”25″ style=”display:none;” />

Sobald der Kommentar abgegeben und dieses Feld ausgefüllt wurde, kann ich mir ziemlich sicher sein, daß kein Mensch mit graphischen Webbrowser es war, der seine Meinung abgeben wollte. Also kann ich getrost diesen Kommentar verwerfen.

Klingt einfach, oder? Ist es auch, daher die folgt mit etwas Abstand eine weitere Möglichkeit.

UPDATE 10 Minuten später
Dieses Input-Feld muß von dem Skript, welches die Kommentare in die Datenbank speichert, auch geprüft werden. Wenn es einen Inhalt aufweist, dann ist es Spam. Ein simpler Code in PHP wie dieser sollte reichen:

if ( !empty($_POST['megatext'])) {
echo “Ein Spambot;
exit;
}