hallo,
Oder Du könntest, was zumindest im Moment die brauchbarste Alternative zu sein scheint, die Besucher mit einer Zwangsvorschau "nerven", statt die Einträge direkt zu speichern.
Das reicht mittlerweile nicht mehr. Es gibt gerade in den letzten Tagen Spam-bots, die damit umgehen können. Die machen nur wieder den Fehler, daß sie aus lauter Begeisterung gleich fünfzig nahezu gleichlautende Einträge produzieren. Sowas sieht man dann sofort, während ein einzelner Eintrag auch schonmal ein paar Tage lang übersehen werden könnte.
Oder einen Filter schreiben, der nach bestimmten Wörtern bzw. URLs sucht, und dann entscheidet, was mit dem Eintrag zu tun ist.
Das ist sicher sinnvoll. Mal ein Beispiel, womit man anfangen könnte:
if ($_SERVER['QUERY_STRING'] == "prev" && $name && !preg_match("/[^a-zA-ZäöüÄÖÜß&; ]/",$name) && $text && !preg_match("/^[^a-zA-ZäöüÄÖÜ]/",$text) && !preg_match("/^[^http:\/\/]/",$url) && !preg_match("/url/",$text)) {
Damit komme ich, wie mir das log zeigt, relativ weit, obwohl die Formularfelder genau diejenigen Namen tragen ("name", "mail", "url"), die von den bots gezielt gesucht werden, und die man daher besser vermeiden sollte. Der Reihe nach passiert folgendes:
- es muß ein Name angegeben sein
- der Name darf nur Buchstaben enthalten
- es muß Text vorhanden sein
- wenn eine URL eingetragen wird, muß sie mit "http://" beginnen
- es darf keine Angaben [url] im Text geben (das kennen die bots als BBCode und tragen das oft ein)
Das reicht vermutlich nicht wirklich aus. Ich schalte solche bzw. ähnliche Abfragen vor, ehe es ans Eintragen geht (übrigens auch in eine Textdatei, die sich hervorragend eignet, wie Ingo bereits angegeben hat). Und normalerweise gibt es nach einer Eintragung eine kurze Bestätigung ("Ihr Beitrag wurde gespeichert" oder so). Die bekommt jemand, der durch den Filter zurückgehalten wird, auch zu sehen, aber bei dem ist es eine glatte Lüge.
Das Archiv hier ist voll mit mehr oder weniger brauchbaren Ideen
Ich habe selber mal einen vergleichbaren Thread im Frühjahr angestoßen und kann mich erinnern, daß Vinzenz da ein paar kluge Anmerkungen geschrieben hatte. Allerdings bin ich jetzt zu faul, den herauszusuchen.
Man könnte die Thematik vielleicht noch etwas vertiefen. Beispielsweise ist mir immer noch nicht restlos klar, wie ein bot überhaupt herausfindet, worauf er reagieren könnte. Ich lasse sämtliche Anzeigen (Eingabeformular, Fehlermeldungen, Vorschau, Bestätigungsmeldung) generieren, es sind keine statischen HTML-Dokumente. Also muß ein bot irgendwie in das PHP-Script hineinschauen können, um zu entscheiden, ob er es aufruft und "bedient". Und dann (selbst wenn das blöde klingt): als normaler Besucher eine Gästebuchseite bin ich es gewohnt, daß ich zum Abschicken einen button betätigen oder die Enter-Taste drücken muß. Eine schlüssige Erklärung, wie ein bot das bedient, fehlt mir auch noch, ich habe da bisher nur Vermutungen. Einen unmittelbaren Aufruf der Textdatei, in der die Eintragungen gespeichert sind, konnte ich bisher nicht feststellen. Besuche von solchen bots gibt es aber täglich mehrmals, das zeigt das log deutlich.
Grüße aus Berlin
Christoph S.