PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
   » Login & MySQL
   » Blätterfunktion
   » Gästebuch
   »Gästebuch Spam
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
Mathe Nachhilfe
Suchmaschinenoptimierung

Nie wieder Spam im Gästebuch

Viele kennen bestimmt das Problem, kaum ist das Gästebuch online, schon verewigen sich die ersten Spamer in diesem. Dieser Spam wird meistens von irgendwelchen Bots geschrieben, die das Netz entsprechend nach Gästebüchern und ähnlichem durchforsten um dort Werbung für ihre zweifelhaften Produkte zu machen.

Hier möchte ich euch ein paar Tipps verraten, wie ihr euch gegen diesen Spam wappnen könnt und so die meisten Spameinträge zurückhaltet.

1. Keine URLs in Einträgen zulassen
So banal wie es klingt, so effektiv ist diese Methode.
Diese Spambots wollen ja meistens, dass der Besucher auf eine andere Seite kommt, weswegen in den meisten Spameinträgen auch eine URL hinterlegt ist.
Bevor ihr den Eintrag speichert, überprüft ihr per regulärem Ausdruck, ob dieser Beitrag eine URL enthält.
Sollte dies der Fall sein, gebt ihr eine Fehlermeldung aus, die den Benutzer bittet, keine URLs in seinem Beitrag zu verwenden.
if(strpos($text, "http://") !== false ||
ereg("(www.[a-zA-Z0-9_-]+)\.([a-zA-Z0-9.]+)",$text)){
    echo "Bitte keine URLs posten";
} else {
//Beitrag speichern
Dieser kleine Codeschnipsel überprüft, ob in der Nachricht "http://" auftaucht bzw. eine URL mit www. aber ohne http, also zum Beispiel www.php-einfach.de

Nachteil: Normale Benutzer können natürlich auch keine URLs mehr schreiben.

2. Unsichtbare Eingabefelder
In eurem Formular verwendet ihr unsichtbare Eingabefelder. Diese Methode hört sich erst komisch an, ist aber sehr effektiv.
Und zwar verwendet ihr Input-Felder, am besten mit einem typischem Namen wie z.B. url, homepage, email, name usw., die ihr per CSS und display: none; unsichtbar schaltet. Ein normaler Besucher sieht diese Felder nicht und wird folglich dort auch nichts eintragen.

Ein Feld kann z.B. so aussehen:
In der CSS-Datei:
.klasse_unsichtbar { display:none; }

Im Formular:
<input type="text" name="homepage" class="klasse_unsichtbar">

Ein Spambot durchsucht euren Quelltext einfach nur nach Formularen, er wird aber nicht die CSS Datei analysieren, um zu überprüfen, ob evt. ein Eingabefeld unsichtbar ist.
Deswegen wird, wenn er das Formular absendet, höchst wahrscheinlich auch Text in diese unsichtbaren Felder eintragen sein.
Die Seite die die Einträge dann speichert, muss einfach nur überprüfen, ob alle unsichtbaren Felder weiterhin leer sind. Sollte dies nicht der Fall sein, war wahrscheinlich ein Spambot am Gange und ihr verweigert die Speicherung des Beitrages.

Noch effektiver wird es, wenn ihr den sichtbaren Feldern kryptische Namen wie z.B. 'a3Hnl' gebt und den unsichtbaren Feldern die typischen Feldnamen wie 'name', 'email' usw.
Auch sollte man mehrere unsichtbare Felder über das Formular verstreuen, sowie ggf. auch unsichtbare textareas einbinden.

Natürlich ist dieser Schutz nur solange effektiv, bis sich die Spambots darauf einstellen, aber immoment ist dieser sehr effektiv.
Sollte dennoch mal wieder das Spammen beginnen, bewirkt eine Umbennung der Feld, insbesondere der sichtbaren, wieder für etwas Ruhe im Kampf gegen Spam.

3. Sicherheitscode / Captcha
Wie ihr einen Sicherheitscode erstellt, erfahrt ihr in unserem Codeschnipsel Sicherheitscode.

Ein Sicherheitscode bzw. Captcha ist eine kleine Grafik, die eine Zahlen- bzw. Buchstabenfolge enthält. Diese soll der Benutzer abtipp. Beim Verarbeiten des Formulars wird dann überprüft ob die Folge richtig abgetippt wurde.

Allerdings vermindert diese Methode den Komfort auf für normale Besucher und Personen mit Sehschwäche können diese Buchstabenfolgen meistens gar nicht entziffern, deswegen sollte diese Methode nur als letztes Mittelm im Kampf gegen den Spam verwendet werden.

4. Wortfilter
Diese Methode ist etwas aufwendiger, hält aber euer Gästebuch so gut wie Spamfrei und schränkt den normalen Nutzer eigentlich nicht ein.

Und zwar geht es darum einen bayessche Filter in seinem Gästebuch zu integrieren, so ähnlich wie es heute Standard ist bei den meisten E-Mail Programme.
Dieser Filter analysiert euren Eintrag und bewertet dann, ob dieser ein Spameintrag ist oder nicht.

Hört sich erstmal schwieriger an als es ist. Es gibt bereits das fertige Script b8, welches sehr gute Dienste leistet.

Nachdem ihr es entsprechend installiert habt, müsst ihr diesen zuerst über das Webinterface trainieren (learn interface). Dazu müsst ihr ein paar Nachrichten als Spam einstufen, am besten ein paar Spammails bzw. alte Spameinträge aus dem Gästebuch verwenden, und ein paar Nachrichten als 'Ham', also als harmlos einstufen. Hier einfach ein paar echte Einträge aus dem Gästebuch nutzen sowie ein paar Texte von eurer Homepage.

Nachdem ihr den Filter trainiert habt, gehts an die Integration in euer Gästebuch.

Die Seite, die den Einträge abspeichert, muss wie folgt angepasst werden:
<php
//Den bayes Filter laden
include("b8/b8.php");
$b8 = new b8();

//... Euer Code

//Überprüfen ob der Eintrag Spamverdächtig ist
if($b8->classify($inhalt) >= 0.7) {
   echo "Euer Eintrag ist vermutlich Spam";
}
//... Weitere Überprüfen sowie
//dann den Eintrag abspeichern
?>
Zuerst müsst ihr den Code von b8 entsprechend einbinden. Mit $b8->classify($inhalt) überprüft ihr, wie verdächtig der Inhalt von $inhalt ist, wobei diese Variable dann den Text des Eintrages enthalten sollte.
Diese Methode gibt dann einen Wert zwischen 0 und 1 zurück, wobei 0 als 'überhaupt nicht verdächtig' und 1 als 'extrem Spam verdächtig' zu interpretieren ist.
Hier liegt die Grenze bei 0.7, also alle Einträge die einen höheren Wert als 0.7 haben werden nicht mehr abgespeichert.

Nun kann es aber passieren, besonders wenn der Filter schlecht trainiert ist, dass auch ein seriöser Eintrag als Spam eingestuft wird.
Um soetwas zu verhindern, kann man z.B. einen Sicherheitscode (siehe 3.) ausgeben, den der Besucher dann abtippen muss, bevor sein Eintrag abgespeichert wird.

Autor Andavos

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» PHP Forum ohne MySQL Datenbank

» Groupon clone websites – Innovati ...

» Fehler im Highlight Script







© PHP-Einfach.de 2003 - 2013