---
title: "ve_guestbook: Kommentare vor absenden prüfen"
url: "https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen"
source: "typo3.net"
tags: ["Extensions","Frage","Sicherheit"]
created: "2006-03-02"
last_reply: "2007-11-26"
replies: 19
solved: false
page: 1
pages: 1
lang: "de"
---

# ve_guestbook: Kommentare vor absenden prüfen

Extensions · 19 Antworten · gestartet 2006-03-02

## Eröffnungsbeitrag

**zab1981** · 2006-03-02 · [Beitrag #1](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/1)

Hallo,

seit eingen Wochen habe ich auf meiner Seite einen "Spinner" zu Gast, der
mehrmals täglich wirre Gästebucheinträge vornimmt. So wie es aussieht,
werden die Einträge tatsächlich per Hand vorgenommen, den Captcha und
verschieben der Seite brachte keine Linderung.
Momentan läuft mein Gästebuch daher auf "moderiert", aber trotzdem beginnt
es zu nerven, wenn man täglich mehrere eMails bekommt über die neuen
Gästebucheinträge.

Die Einträge werden über ständig wechselnde anonyme Proxys eingetragen,
somit fällt auch sperren der IP weg.

Meine Idee ist nun, die Gästebuchkommentare bereits beim Absenden auf das
vorkommen bestimmter Zeichenfolgen zu prüfen und wenn nun beispielsweise der
(Teil-)String aus der Blacklist auftaucht, der Eintrag gar nicht gespeichert
wird (und stattdessen eine Fehlermeldung ausgegeben wird).
So könnte ich beispielsweise die immer gleich lautenden Einträge (meist
immer die gleichen URLs, oder teile von URLs) im vornherein aussperren.

Nur hab ich keine Idee, wie ich das umsetzen könnte.

Mein Gästebuch: ve_guestbook 1.10.0
Mein Typo: T3 3.8.0

Bin für jeden Tip und jede Hilfe dankbar ....

Sebastian

## Antworten

### [#2](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/2) · woida · 2006-03-27

Also ich hab das Gästebuch mal in der Form erweitert, daß bei bestimmten Schlüßelwörtern 'deleted' auf '1' gesetzt wird und der Eintrag somit nicht im Gästebuch erscheint.
Was sich auch als erstaunlich wirksam rausgestellt hat, ist der Vergleich, ob Vorname gleich Nachname ist. In diesem Fall setzte ich deleted auch auf '1'. Das schöne dabei ist, daß Einträge, die fälschlicherweise als "Spam" erkannt wurden, nicht verloren sind.

```php
if (strcmp($saveData['surname'],$saveData['firstname']) == 0) $saveData['deleted'] = '1';
$temp=strtolower($saveData['entry']);
if (strpos($temp,"jude") > 0 || strpos($temp,"demokratie") > 0 || strpos($temp,"holocaust") > 0) $saveData['deleted'] = '1';
```

Der Code kommt VOR

```php
$insert = $GLOBALS['TYPO3_DB']->exec_INSERTquery($this->strEntryTable, $saveData);
```

(ca. in Zeile 670)

Die Suchbegriffe kann man einfach erweitern und müssen klein geschrieben werden. Je nach Seite kann es auch sein, daß die nicht passen (zb. demokratie).

Im Prinzip wär es besser, einen Regulären Ausdruck zu verwenden, aber leider hat der Linux-Regexp nicht unter Windows funktioniert, so daß ich hier strpos verwende.

Wenn man die Einträge gar nicht in der Datenbank haben will, so kann man ja vor dem INSERT abfragen, ob 'deleted' auf '1' gesetzt wurde.

Wenn ich demnächst mal Zeit habe, werde ich noch eine Zeitstempelüberpüfung einbauen, so daß Gästebucheinträge die in weniger als X Sekunden (z.b. 7) geschrieben wurden, zurückgewiesen werden.

Ein weiterer intressanter Ansatz wäre, den Gästebucheintrag erstmal zu razor zu schicken. Je nach dessen Resultat wird er auch verworfen.

### [#3](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/3) · johanness · 2006-03-29

woida, deine Lösung klappt gut! Danke!

Allerdings nicht, wenn ich beim Namen auf bestimmte Strings prüfe... Was ist an diesen abgeänderten Zeilen falsch?

```php
$temp=strtolower($saveData['firstname']);
if (strpos($temp,"Rulez") > 0 || strpos($temp,"rulez") > 0) $saveData['deleted'] = '1'; 

$temp=strtolower($saveData['surname']);
if (strpos($temp,"Rulez") > 0 || strpos($temp,"rulez") > 0) $saveData['deleted'] = '1';
```

Danke!

### [#4](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/4) · woida · 2006-03-29

#giggle#
Denk mal scharf nach:
Ich hab dir mal das "$temp" in den Vergleich eingesetzt:

if (strpos(**strtolower**($saveData['firstname']),"**R**ulez") > 0

Siehst dus?

### [#5](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/5) · johanness · 2006-03-29

> **woida schrieb:**
>
> #giggle#
> Denk mal scharf nach:
> Ich hab dir mal das "$temp" in den Vergleich eingesetzt:
>
> if (strpos(**strtolower**($saveData['firstname']),"**R**ulez") > 0
>
> Siehst dus?

Ich kann kein PHP, kannst du mir einfach die "Lösung" geben? Danke.
Für "email" habe ich es analog gemacht, da klappt es aber auch!?

### [#6](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/6) · woida · 2006-03-29

Man muss nur entweder
a) den Quellcode lesen und die fett markierten Wörter anschauen. strtolower heißt wohl "string to lower", also einen String in Kleinbuchstaben umwandeln und das beißt sich mit dem großen "R" in "Rulez"
b) einfach mein Posting komplett lesen

> Die Suchbegriffe kann man einfach erweitern **und müssen klein geschrieben werden**

Für beide Punkte brauchst du keine PHP Kentnisse.

### [#7](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/7) · zab1981 · 2006-03-29

```php
if (strpos(strtolower($saveData['firstname']),"Rulez") > 0
```

Guggst Du:

**strtolower($saveData['firstname'])** Setzt den String $saveData['firstname'] in Kleinbuchstaben um, dann wird mit **strpos** auf das Vorkommen des Suchstrings "Rulez" geprüft. Macht hier aber keinen Sinn, da die Variable $saveData['firstname'] für die Abfrage in Kleinbuchstaben gewandelt wurde. Rulez (mit großen "R") kann also nicht gefunden werden ...

Sebastian

### [#8](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/8) · zab1981 · 2006-03-29

An was ich mir jetzt noch die Zähne ausbeisse ist ein schöner Hinweis, dass der Eintrag nicht gespeichert wurde, weil .... ungültige Zeichen im Kommentar.

Momentan sieht's ja für den Besucher so aus, als ob der Eintrag eingetragen wurde nur nicht angezeigt wird.

Gibt's da schon eine Überlegung?

Sebastian

### [#9](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/9) · woida · 2006-03-29

Ich habs mir auch nur kurz angeschaut, aber im Prinzip gibts 2 Möglichkeiten:
1. Du machst den Vergleich in checkForm() und kannst eine Fehlermeldung übergeben, dann wird der Eintrag aber auch nicht gespeichert
2. Du fügst nach der Abfrage "if ($insert) {" eine weitere Abfrage ein, ob $deleted auf 1 gesetzt wurde und wenn ja kannst du in
$markerArray['###FORM_ERROR###'] und $markerArray['###FORM_ERROR_FIELDS###'] eine Fehlermeldung schreiben.

### [#10](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/10) · johanness · 2006-04-03

> **woida schrieb:**
>
> Ich habs mir auch nur kurz angeschaut, aber im Prinzip gibts 2 Möglichkeiten:
> 1. Du machst den Vergleich in checkForm() und kannst eine Fehlermeldung übergeben, dann wird der Eintrag aber auch nicht gespeichert
> 2. Du fügst nach der Abfrage "if ($insert) {" eine weitere Abfrage ein, ob $deleted auf 1 gesetzt wurde und wenn ja kannst du in
> $markerArray['###FORM_ERROR###'] und $markerArray['###FORM_ERROR_FIELDS###'] eine Fehlermeldung schreiben.

KLingt recht gut - aber gibt's schon endgültige Lösungsvorschläge für die PHP-Anfänger? ;-)

### [#11](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/11) · KarenM · 2006-04-30

Hallöchen,

ich habe den Spamfilter von johanness noch einmal etwas verfeinert:

```php
### KARENS Spamfilter

                    if (strcmp($saveData['surname'],$saveData['firstname']) == 0) $saveData['hidden'] = '1';

                    $temp=implode($saveData);
                    $temp=strtolower($temp);
                    $spamlist=array("jude","demokratie","xxx.xxx.xxx.xxx");

                    foreach ($spamlist as $spamelement)
					{
					if (strpos($temp,$spamelement) > 0 )$saveData['hidden'] = '1';
					}
```

Der Platz im Script hat sich nicht verändert, die Spamliste kann jetzt einfacher erweitert werden. Alle Felder des Gästebucheintrags werden jetzt überprüft.Der Eintrag xxx.xxx.xxx.xxx soll ein Dummy für eine IP-Adresse sein, die jetzt auch gesperrt werden kann. Ich wollte die Einträge im BE noch sehen, deshalb setze ich Spameinträge nur auf hidden.

"Meine"  Spammer werde ich damit wohl größtenteils erwischen! :D

PS: Ich kann leider (noch) keine Extensions entwickeln, vielleicht ist ja jemand von Euch fit und spendiert dem ve_guestbook eine neue Tabelle mit der Blacklist, die man dann in BE pflegen kann.

Gruß Karen

### [#12](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/12) · woida · 2006-04-30

> ich habe den Spamfilter von johanness noch einmal etwas verfeinert:

#evil#  den hab ich geschrieben  #evil#

### [#13](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/13) · KarenM · 2006-05-01

:o

Sorry woida ...es war wohl spät

Ich hab jetzt noch eine Änderung: Wenn der Eintrag gefiltert wurde, zeige ich auch nicht mehr das Gästebuch an, sondern einen Hinweis auf den Spamfilter und die Nutzungsbedingungen.

Gruß Karen

### [#14](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/14) · KarenM · 2006-05-06

:D

Hallo zusammen, seitdem ich meinen Spamschutz eingebaut habe, gab es keine Spamversuche mehr. Ich habe allerdings noch etwas mehr gebastelt. Folgendes Metatag hatt m.E. schon vor der Änderung des php-Scripts Erfolg:

```html
<meta name="robots" content="noindex,nofollow" />
```

Außerdem habe ich ein großes, rotes Stopschild "No Spam - aktiver Spamfilter" gebastelt, deutsche und englische Nutzungbedingungen festgelegt und zu guter Letzt verweise ich bei einem gefilterten Eintrag auf eine Seite, wo dem Benutzer mitgeteilt wird, dass sein Eintrag gefiltert wurde. Hat bisher super geklappt- meine Vermutung ist,dass die Einträge doch noch händisch gesetzt werden.

Ich wünsche allen anderen auch viel Erfolg im Kampf gegen Spam!
Viele Grüße Karen

### [#15](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/15) · lizbet · 2006-08-15

:D

genau das, was ich auch gebraucht habe - merci!

wobei ne blacklist-tabelle freilich auch was feines waer...

es gruesst
liz

### [#16](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/16) · KarenM · 2006-09-09

Hallo zusammen,

auf die Dauer habe ich meinen Spamfilter noch einaml verfeinert:

ich habe im Nachrichtenfeld keine URLs mehr erlaubt und im Eingabeformular das Homepagefeld komplett entfernt.(wer brauch dieses Feld wirklich?). Und trotzdem gab es noch Spammer, die das Feld Homepage in der Datenbank füllen konnten :o .
Ich gehe nun davon aus, dass sich diese Leute auf das typo3 ve_guestbook schön spezialisiert haben, und unsere Datenbank automatisiert mit eigenen Scripten füllen. Daraufhin habe ich das Feld für die Homepage in der Datenbank mit dem MyAdmin-Tool umbenannt. #evil# Seitdem ist mein Gästebuch von Spam komplett befreit. #giggle#

### [#17](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/17) · woida · 2006-09-09

> Ich gehe nun davon aus, dass sich diese Leute auf das typo3 ve_guestbook schön spezialisiert haben, und unsere Datenbank automatisiert mit eigenen Scripten füllen.

Ja, die haben sich auf das ve_guestbook spezialisiert, und NEIN, die schreiben nicht direkt in die Datenbank; Wenn Sie das koennten, waere es doch viel effizienter den Spam auf jeder Seite (= in der tt_content) unterzubringen.
Das das Feld Homepage trotzdem in der Datenbank ladt, liegt wohl dran, dass ve_guestbook wohl beim Eintragen der Daten in die DB nicht ueberprueft, ob das Feld deaktiviert ist oder nicht. Der Spammer muss also nur die URL des Gaestebuchs aufrufen und die gewuenschten Felder senden.

### [#18](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/18) · Bond999 · 2006-11-18

In welcher Datei gibt ihr das denn ein?

ICh verstehe das irgendwie nicht... bin noch so ne art Newbie...

Vielen Dank

### [#19](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/19) · lizbet · 2007-02-16

@karen und @woida

genau genau genau!! danke fuer die verifizierung!
:D

@bond

hast du schon mal mit phpmyadmin gearbeitet? falls nein: du gehst ins backend
- tools
  - phpMyAdmin
    - tx_veguestboook_entries
      - feld "homepage" umbenennen

du solltest allerdings mit diesem programm vorsichtig umgehen, falls du dich gar nicht damit auskennst, da kannstedirnaemlichalleszerhacke...

es gruesst
lizbet

### [#20](https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen/20) · einpraegsam.​net · 2007-11-26

> **woida schrieb:**
>
> Ja, die haben sich auf das ve_guestbook spezialisiert...

Das ist leider nach wie vor ein Thema (bei mir trotz Captcha)

---

Quelle: „ve_guestbook: Kommentare vor absenden prüfen“, typo3.net, https://www.typo3.net/d/38822-ve-guestbook-kommentare-vor-absenden-pruefen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
