Spam ist eine der größten Gefahren des Social Web. Laut Websites wie Postini handelt es sich bei 10 von 12 E-Mail-Nachrichten um Spam. Als ob das nicht schon genug wäre, um Sie zu erschrecken, enthält 1 von 39 E-Mails einen Virus. Spam dringt auch in andere Regionen des Internets vor. Die Ersteller der Blogging-Software Wordpress berichten, dass fast 87% aller Blog-Kommentare ebenfalls Spam sind. Da sich Messaging- und Kommunikationsanwendungen im gesamten Web immer mehr ausbreiten, müssen Entwickler und Websitebesitzer kreativ gegen Tausende und Abertausende unerwünschter Nachrichten kämpfen, die jeden Tag strömen. Es kann schwierig sein, in Blogs, Foren oder sogar Kontaktformularen die beste Spam-Verhütungsmethode zu wählen. In diesem Artikel werfen wir einen Blick auf einen Dienst namens Akismet und wie dieser helfen kann. Wir werden auch untersuchen, warum andere Methoden zur Bekämpfung von Spam fehlschlagen.
Mehrere aufeinanderfolgende Einsendungen werden nicht zugelassen. Spammer veröffentlichen fast immer mehr als einen SPAM-Kommentar oder eine Nachricht. Eine gebräuchliche Methode zur Spam-Bekämpfung besteht darin, die eingehende Nachricht mit der IP-Adresse des Benutzers und einem Zeitstempel des Beitrags zu protokollieren. Wenn ein Benutzer versucht, mehrere Kommentare zu posten, können Sie überprüfen, ob der Benutzer innerhalb eines bestimmten Zeitfensters mehr als einmal Beiträge geschrieben hat, beispielsweise 30 Sekunden, oder ob das aktuelle Poster auch das letzte Poster war. Dies ist keine kugelsichere Methode, da Spammer Proxys verwenden können, wenn sie mehrmals posten möchten, und Roboter auf der Welt so viel Zeit haben, wie sie Ihre Site spammen möchten.
Keyword-Blacklist. Eine andere Methode, um Spam zu bekämpfen, besteht darin, selbst eine Blacklist mit gängigen Spam-Schlüsselwörtern zu erstellen und Beiträge, die die Wörter enthalten, nicht zuzulassen. In der einfachsten Form können Sie ein Array von Schlüsselwörtern erstellen und prüfen, ob eine eingehende Zeichenfolge diese enthält. Spammer haben Abwehrmechanismen gegen diese Methode entwickelt, indem sie Variationen der Wörter veröffentlicht haben. Sie ersetzen Buchstaben durch Zahlen, Symbole und andere derartige Zeichen, um eine breite Auswahl an Keyword-Variationen zu erstellen.
CAPTCHA. CAPTCHA (vollständig automatisierter öffentlicher Turing-Test) ist heute eine der häufigsten Spam-Präventionstechniken im Internet. Die Technik ist sehr nützlich, und fast jede Website, auf der Sie sich für ein Konto registrieren oder Informationen öffentlich posten können, verwendet CAPTCHA auf die eine oder andere Weise. CAPTCHA-Tests können Audiodateien sein. Üblicherweise handelt es sich jedoch um Bilder, die eine Reihe von Zeichen und Zahlen enthalten, die Sie in ein Formular eingeben müssen. Die Technik ist ein nützliches Werkzeug zum Blockieren von Robotern, die versuchen, Ihre Website zu besuchen, um Spam-Nachrichten zu posten oder gefälschte Konten mit gefälschten Informationen zu erstellen.
CAPTCHA ist für den beabsichtigten Gebrauch gut geeignet, es gibt jedoch kleinere Nachteile. Ein CAPTCHA erfordert (noch ein anderes) Feld, das Benutzer ausfüllen müssen, nachdem Benutzernamen, Kennwörter und Sicherheitsfragen eingegeben wurden. Es gibt verständlicherweise einen Belästigungsfaktor, der mit ihrer Verwendung einhergeht. Außerdem können deaktivierte Benutzer das Feld CAPTCHA möglicherweise nicht verwenden. Schließlich können menschliche Spammer auch noch Ihre Site spammen, da ein CAPTCHA nur Roboterspammer blockiert.
Nachdem Sie einige der aktuellen Methoden und ihre Schwachpunkte überprüft haben, fragen Sie sich vielleicht, was wir sonst noch tun können, um unsere Blogging-Anwendungen zu schützen. Ich möchte ein neues Tool zur Bekämpfung von Spam von den Erstellern von WordPress vorstellen. Der Dienst heißt Akismet und wird von seinen Erstellern als "... kollaborative Anstrengung bezeichnet, um Kommentare und Trackback-Spam zu einem Problem zu machen und die Unschuld beim Bloggen wiederherzustellen. Sie müssen sich also nie wieder um Spam kümmern."
Das Tool kann in jedes Projekt implementiert werden, sofern Sie über einen API-Schlüssel verfügen, der kostenlos für nicht-kommerzielle Zwecke verwendet werden kann oder für nur 5 USD pro Monat für kommerzielle Zwecke erworben werden kann. Es gibt verschiedene Akismet-Plugins für vorhandene Software, die später in diesem Artikel beschrieben werden. Alternativ können Sie den Service in Ihre eigenen Projekte einbeziehen, wie wir Ihnen zeigen werden.
Ab sofort können Sie einen API-Schlüssel nur erhalten, wenn Sie sich für ein kostenloses WordPress.com-Benutzerkonto anmelden. Richten Sie Ihre Browser auf http://wordpress.com/signup/ und füllen Sie die normalerweise erforderlichen Felder aus: Benutzername, Kennwort und E-Mail-Adresse (siehe unten). Lesen Sie dann die Bedingungen der Servicevereinbarung und stimmen Sie diesen zu. Stellen Sie sicher, dass Sie sich für ein Blog registrieren, da Sie ohne die Registrierung keinen API-Schlüssel erhalten können. Machen Sie sich keine Sorgen über dieses Detail, da der API-Schlüssel nicht an ein bestimmtes Blog gebunden ist. Wenn Sie den Registrierungsvorgang abgeschlossen haben, erhalten Sie eine E-Mail mit Ihrem neuen API-Schlüssel.
Sie müssen nun PHP5Akismet.0.4.zip (24K) von Achingbrain herunterladen und entpacken. Laden Sie die einzelne PHP-Datei in einen Bereich hoch, auf den Ihre Skripts zugreifen können. Die anderen Dateien und Dokumentationen dienen nur als Referenz.
Wir gehen davon aus, dass Sie mit einem bestehenden Projekt arbeiten. Dies kann alles sein, was Benutzerbeiträge wie ein Forum oder ein Blog zulässt. Wir gehen auch davon aus, dass die Logik zum Erstellen und Anzeigen von Inhalten bereits vorhanden ist. In diesem Sinne ist unser erster Schritt das Laden der Datei in unser eigenes Projekt.
Include "Pfad / zu / Datei / Akismet.class.php";
Als Nächstes müssen wir eine neue Instanz der Akismet-Klasse erstellen. Mit Hilfe des Klassenkonstruktors können wir unseren API-Schlüssel und die URL der Site mit diesem Schlüssel übergeben. Stellen Sie sicher, dass Sie die folgenden Daten durch Ihre eigenen ersetzen.
$ akismet = new Akismet ("http://myblog.com", "API KEY HERE");
Nun benötigt der Dienst die eigentlichen Kommentardaten, die wir überprüfen möchten. Im folgenden Beispiel verwende ich einige Beispieldaten, aber in der Produktion würden die Kommentarinformationen von POST-Daten stammen. Der Akismet-Dienst vergleicht dann die Kommentarinformationen mit einer Datenbank mit mehr als 7.486.928.953 Spam-Kommentaren und gibt ein Ergebnis zurück, wenn der übermittelte Beitrag als Spam-Kommentar identifiziert wurde.
$ akismet-> setCommentAuthor ("Justin Shreve"); $ akismet-> setCommentAuthorEmail ("[email protected]"); $ akismet-> setCommentAuthorURL ("http://serenelabs.com"); $ akismet-> setCommentType ("Foren"); $ akismet-> setCommentContent ("Ich stimme wirklich dem zu, was Sie sagen! Ich kann nicht glauben, dass ich noch nie darüber nachgedacht habe!");
Die hier vorgestellten Funktionen sind recht einfach. Die einzige Funktion, die noch näher erläutert werden muss, ist die Funktion setCommentType. Dies wird von Akismet verwendet, um dem Dienst zu helfen, den Ursprung des Kommentars zu ermitteln (wurde er in einer öffentlichen Newsgruppe, einem Forum oder einem Blog veröffentlicht?) Und Sie können jedes Argument übergeben, das Sie möchten. Wenn Sie beispielsweise die Funktion zum Spam-Proofing eines Wikis verwenden, verwenden Sie als Typ Wiki. Wenn Sie ein Blog schützen, verwenden Sie einen Blogtyp.
Jetzt verwenden wir eine Funktion namens isCommentSpam. Dies ist die Funktion, die den Dienst tatsächlich kontaktiert. Die boolesche Funktion gibt true zurück, wenn der Kommentar als Spam erkannt wird, und false, wenn der Kommentar als legitim bestätigt wird.
if ($ akismet-> isCommentSpam ()) // Hier können wir Logik zum Umgang mit Spam-Kommentaren speichern. // Normalerweise können wir den Kommentar intern speichern, um später darauf zurückgreifen zu können, falls der Dienst einen Fehler macht. else // Hier fügen Sie den Inhalt in die Datenbank ein.
Die Verwendung von Akismet ist so einfach wie diese wenigen Codezeilen! Sie haben jetzt einen Spambekämpfungsdienst in Ihre Site integriert. Der Dienst kann in Verbindung mit den zuvor genannten Formen der Spam-Abwehr verwendet werden. Denken Sie daran, dass Akismet ein Dienst ist, der bei jeder Verwendung wächst, da die Funktionen Ihren Spam-Inhalt in die Datenbank aufnehmen. Möglicherweise gibt es gültige Nachrichten, die manchmal als Spam identifiziert werden, und umgekehrt. Infolgedessen möchten wir möglicherweise etwas mehr Funktionalität integrieren, um potenziellen Fehlidentifizierungen entgegenzuwirken.
Wenn eine Nachricht fälschlicherweise als SPAM identifiziert wird, können Sie Akismet benachrichtigen und diese entsprechend behandeln. Alternativ können Sie einen Kommentar als SPAM markieren, wenn er durch den Akismet-Filter fällt. Stellen Sie beim Implementieren der folgenden Funktionalität sicher, dass die Kommentardaten in den Variablen in demselben Format wie oben festgelegt sind.
Die Funktion
$ akismet-> submitHam ();
kann verwendet werden, um den Dienst darüber zu informieren, dass der als Spam gemeldete Kommentar tatsächlich in Ordnung ist.
Während der Funktion
$ akismet-> submitSpam ();
kann verwendet werden, um den Dienst darüber zu informieren, dass ein genehmigter Kommentar tatsächlich ein Stück Spam ist.
PHP5 ist nicht jedermanns Sache. Akismet-Bibliotheken wurden auch in einer Reihe anderer Sprachen erstellt. Im Folgenden sind einige der beliebtesten:
Alle diese können auf ähnliche Weise wie oben beschrieben in Ihre Projekte integriert werden.
Sie haben nicht das Bedürfnis, Ihre eigene Software zu rollen, möchten aber trotzdem Akismet nutzen? Es gibt bereits viele Lösungen für Blog-, CMS- oder Forum-Software:
Ich hoffe, dass dieser Leitfaden als Einführung in alternative Formen des Spam-Kampfes dient. Eine Site ohne SPAM erscheint den Benutzern nicht nur professioneller, sondern ist auch für Administratoren und Moderatoren viel einfacher zu verwalten.