Antworten auf deine Fragen:
Neues Thema erstellen

Spamschutz im Gästebuch

Niklasnick

Nicht mehr ganz neu hier

Moin!

Bevor ihr beim Titel des Fred's umfallt: Ich habe schon einiges ausprobiert,
und bin nicht ganz unbedarft. In HTML und CSS kenne ich mich gut aus,
an PHP arbeite ich jedoch noch nicht sehr lange.
Und zwar habe ich auf meiner Website ein Gästebuch, es nennt sich
"flatPHPbook", und dort bekomme ich oft Spameinträge.
Ich habe schon alles mögliche ausprobiert, ich habe eine .htaccess Datei
auf dem Server liegen, im GBordner, aber durch Proxy's (nehme ich an) und
dadurch gerne variierende IP's bringt die nur bedingt etwas.
Nun gut, ich bekommen keine 4.000 - 6.000 Einträge mehr am Tag,
aber 40 sind mir auch zu viele, die kann ich nicht alle weglöschen.
Captcha's sind auch nicht mehr sicher, Ein anderes Gästebuch mit Vorschau und dadurch Schutz hat mir auch nicht zugesagt, und dauernd den Gästebuchordner verschieben macht auch keinen Spaß.

Ich habe aber eine genaue Ahnung, was ich machen will. Ich will, dass Beiträge mit bestimmten Wörtern wie "Viagra", "Share" etc. nicht gespeichert werden.
Ich hatte dazu auch mal ein Script gefunden, aber das wollte nicht so, wie ich wollte. Also frage ich euch (Nach wirklich tagelangem Googlen):
Kennt ihr "den Code meiner Träume"? Also einen Code, der Beiträge mit bestimmten Inhalten als Spam identifiziert und gar nicht erst speichert?
Und wenn ja, wo muss ich den in meinem Gästebuch einsetzen?
Ich hoffe, ihr wisst was ich meine und versteht mich. Vielleicht kann mir ja jemand helfen :)
 
Zuletzt bearbeitet:

Lizzard

Aufmerksamer

AW: Spamschutz im Gästebuch

Nur mal so eine Idee:

Baue einfach eine select-box mit zwei Werten ein (Ja/Nein). Diese fragst du vor dem Absenden ab. Wenn Nein (als erster Wert der Select-Box) ausgewählt ist kann das Formular nicht abgesendet werden, wann Ja dann wird das Formular abgesendet.

Also Frage könntest du etwas in der Richtung vor die Select-Box setzen:
"Bin ich ein Mensch ?"


Hoffe das hilft dir weiter und denke dass das auch für dich als php-Anfänger einfach zu realisieren wäre.
 

Niklasnick

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Hey, stimmt! Darüber habe ich noch gar nicht nachgedacht.
Das werde ich als erstes machen, trotzdem wäre es toll, noch einen Stichwortschutz zu haben, da ich mir so sicher sein kann, dass das funktioniert.
 

CIX88

Aktives Mitglied

AW: Spamschutz im Gästebuch

Das Thema Spamschutz wurde hier im Forum schon oft genug angesprochen. Es steht sogar ein Thread unter diesem, der auch zu diesem Thema mit nützlichen Link etwas aussagt. Man muss es nur lesen :)
 

Lizzard

Aufmerksamer

AW: Spamschutz im Gästebuch

Naja. Das kannst du ja auch machen. Dann fragst du halt ein Input-Feld ab, in welches der User ein bestimmtes Wort eintippen muss. Wenn das eingetragene Wort dann gleich deiner Vorgabe ist, darf das Formular abgesendet bzw. Daten in die Datenbank geschrieben werden.
 

daimonion

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Was auch noch wichtig ist, das du mittels Meta tags den robots sagst, dass sie auf der Gästebuchseite keinen Links folgen sollen. Dadurch wird dein Gästebuch uninteressant für Spammer.
Ein Hidden Feld und ein Redirect wie beschrieben helfen auch noch gegen Spambots.

Ganz böse ist es wenn du die Werte name='' bei emails und Homepageangaben (die wo dann ins Postarray reinkommen) veränderst. Spambots füllen die Felder ja automatisiert aus und erkennen sie anhand der Namen. Wenn du dort völlig sinnfreie Namen wälst haben die Bots Probleme.

Innerhalb des Skriptes würde ich dann die einzelnen Felder akribisch prüfen.

Gegen Spamwörter hab ich mal ne Funktion geschrieben. Muß die aber erst mal suchen.
 
Zuletzt bearbeitet:

stroyer

Aktives Mitglied

AW: Spamschutz im Gästebuch

Ich würd einfach ein Array mit den "verbotenen" Wörtern machen und für jedes Element daraus schauen, ob es im dir gesendeten text vorkommt.
Hast du außerdem schon mal versucht die Gästebuch-Datei umzubenennen?
 

Niklasnick

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Ja, die Selectbox arbeite ich grade ein. Ich hoffe, dass sie mir hilft ;)
@ Daimonion: Könntest du mir das mit dem Böse-Bots-Keine-Links noch etwas
genauer erklären? Klingt interessant, was bewirkt dass den im Endeffekt genau
bzw. wie wirkt das?
@Stroyer: Genau sowas suche ich, ich habe da nur nie das richtige gefunden.
Wahrscheinlich habe ich nicht die richtigen Google-Stichwörter benutzt, könntest du
mir mal so ein Script zeigen/erklären, wie ich es wo in der Datei einsetze?
Gästebuch umbenennen bringt leider auch nix. Ich habe auch schon oft den Ordner
verschoben. So hängt man zwar alte Bots ab, aber neue kommen wieder her :-/
Das blödeste an der ganzen Sache ist auch noch, dass ich da nicht wie wild
Sicherheitsfunktionen reinhauen kann, da dass eine eher kommerzielle Seite ist.
Und zwar ist sie für die Hundezucht meiner Eltern, und deswegen sollten eher dezent
Sachen wie "Stichworterkennung" und meine "DauerbotIPsperre .htaccess" im
Hintergrund werkeln, so in das Formular setze ich dann noch etwas wie
"Kommentar wirklich abschicken? -Ja -Nein" mit einer "Anklickbox".
Ich hoffe, das reicht!



Ich glaube, ihr werdet mich für meine unfachmännischen Ausdrücke hassen :D
 

daimonion

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Ich poste dir mal hier meine Funktion zum Wörterschutz:
Sicher nicht das gelbe vom Ei, aber es hat erst mal für den Anfang gereicht.
Mittlerweile brauche ich die Funktion aber nicht mehr.

PHP:
function spam_prevention($message) {
	//load file with spamwords and build array
	if (file_exists(DATEIPFAD.SPAMWORDFILE)) {
		$swords = file_get_contents(DATEIPFAD.SPAMWORDFILE);
		$swords = explode(";",$swords);
	} 
	else {
	 return "Spamdatei konnte nicht gefunden werden. Bitte kontaktiere den Administrator.<br />";
	}		
	//check message if there are any Spamwords which are in the Spamwordlist
	foreach( $swords as $sword) {
		//Dateiformat sichern. Wenn nach dem letzten Spamword aus versehen, ein Semikolon gesetzt wurde, oder das Format beschädigt wurde.
		if (empty($sword)) continue;
		if (!(strpos(strtolower($message),$sword) === false)) {
			if ($sword == 'http' || $sword == 'www') {
				return 'In diesem G&auml;stebuch d&uuml;rfen keine Hyperlinks gesetzt werden.<br>M&ouml;chtest du dennoch einen Link setzen, kontaktiere bitte den Webmaster.<br /><br />';
			}
			else {
				return 'Das Spamword "'.$sword.'" wurde in der Nachricht entdeckt. Bitte formuliere deine Nachricht so, dass dieses, oder &auml;hnliche Wörter nicht vorkommen!<br /><br />';
			}
		} 
	}
	return;
}

Zu der Funktion gehört noch eine Spamworddatei. Eine aktuelle Version könnt ihr von

runterladen

Das mit dem Link nicht folgen sieht folgendermaßen aus.

Der Sinn hinter Spambots bzw. Spamengines ist eigentlich nur der, das massenhaft Backlinks generiert werden sollen, damit Google die jeweiligen Seiten recht weit oben in den Index schiebt. Wenn du nun in dein Gästebuch einen Meta Tag

Code:
<META NAME="robots" CONTENT="noindex, nofollow">

einbaust, dann weist du die Google und anderen Suchmaschinenbots an, diese Seite nicht zu indizieren. D.h. die Links, die auf dieser Seite erscheinen werden bei Google nicht beachtet. Da die Spamengines auch effizent gestaltet sind, prüfen die natürlich auch ihren Erfolg. Da deine Seite ja nicht verlinkt, fällst du bei denen auch aus dem Zielraster und die Spambots lassen dich in Ruhe.

So ähnlich hab ich das irgendwo mal gelesen. Sicher diese Maßnahme allein ist kein Garant dafür, dass keine Spambots kommen, aber in Zusammenarbeit mit einigen anderen Mittelchen sicher eine gute Waffe. Ich hatte damals in meinem Gästebuch den Kampf gegen die Bots innerhalb einer Woche gewonnen.
 

Niklasnick

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Hey!
Danke für diesen Umfang- und Hilfreichen Beitrag!
Den Stichwortscanner habe ich schonmal reingemacht, läuft auch alles =)
Mal gucken, ob dass den auch funktioniert.
Allerdings werde ich manche Spameinträge wohl immer noch manuell löschen müssen,
manchmal habe ich komplette, lange Textbeiträge, ohne Links,
wo einfach nur ein Text ist, der nichtmal Schimpfwörter oder soetwas enthält.
Seltsam, und völlig Sinnfrei.
Und das mit den Meta's versuche ich auch noch einzubauen, allerdings habe
ich im Moment noch ein normales PHP fertiggästebuch, von Strato,
was komplett aus PHP besteht. Da ist noch kein HTML bei, oder braucht man
kein HTMLgerüst für Meta's?
 

daimonion

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Natürlich brauchst du HTML. Denn nur das kann der Browser verstehen (Von Javascript mal abgesehen. Aber das bearbeitet im Endeffekt auch nur HTML)
 

Niklasnick

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Hmm, irgendwie will die Stichwortsperre nicht so richtig.
Beiträge mit verbotenen Wörtern kommen trotzdem durch.
Ich habe die Spamworddatei als .db gespeichert und verlinkt, ist das ein fehler?
 

daimonion

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Die Endung der Datei ist nicht relevant. In der Zeile

PHP:
if (file_exists(DATEIPFAD.SPAMWORDFILE)) {

wird geprüft ob die Datei existiert. Die Werte für DATEIPFAD und SPAMWORDFILE sind defines die natürlich noch definiert werden müssen. Alternativ kannst du dort natürlich auch den direkten Pfad zu deiner Datei eintragen.

Zeig mal deine Änderungen!

Grüße
Daimonion
 

Niklasnick

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Zeig mal deine Änderungen!

Lieber nicht...

if (file_exists(spamword.db)) {
$swords = file_get_contents(spamword.db);

Ich hatte nämlich den dümmsten Fehler gemacht, seit ich Websites mache...
Ich hatte das file_get_contents nicht eingestellt :kopfpatsch:
Mein Fehler...
Aber es war schon so spät...
Und ich hatte einen anstrengenden tag und war müde.
Naja, trotzdem hätte ich selber drauf kommen können.
 
Zuletzt bearbeitet:

Niklasnick

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Ja ;)

Aber obwohl das jetzt richtig konfiguriert sein müsste,
kommen noch Nachrichten. Ich habe grade mal testweise eine Nachricht
mit dem Inhalt "Viagra" losgeschickt, und sie kam einfach so durch...

Kommt es drauf an, wo im GB das Script steht? Ich habe es unter "Functions"...
 

Niklasnick

Nicht mehr ganz neu hier

AW: Spamschutz im Gästebuch

Ichentschuldige mich jetzt schon mal für den Doppelpost, es tut mir Leid. ABER: Will mir denn niemand helfen?
 

stroyer

Aktives Mitglied

AW: Spamschutz im Gästebuch

1) hast du spamword.db so definiert, dass es den Dateinamen enthält? (notfalls direkt durch den dateinamen ersetzten oder per define richtig setzen oder eine Variable mit dem Dateinamen.
2) was hast du bis jetzt an code? das spam_prevention muss ziemlich weit oben aufgerufen werden, und zwar

...
$error=spam_prevention($_POST['message']);
if($error!='')
{
echo($error);
}
else
{
//Beitrag eintragen
...
}
...
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.354
Mitglieder
67.531
Neuestes Mitglied
webahoi
Oben