online 1
gast (50)

/ Forum / Webseiten/HTML

Webseiten/HTMLWebseiten/HTML

Fragevon Karl74 vom 29.09.2020, 20:41 Options

Spamfilter in Gästebuch

Hallo zusammen,

Ich habe auf meiner seite ein kleines Gästebuch.
Jedoch wird dies seit einiger Zeit von Spam nur so überflutet.

Ich benütze WoltLab Burning Book 1.1.2 mit Captchas.
Nun bringt das aber rein nichts.

Habe mir gedacht dass dort eine Rechnung (zb: 3+4) eine bessere Lösung wäre.

Jedoch habe ich im I-Net nicht wirklich was gefunden und von selbst kann ich das leider nicht?

Wenn jemand eventuell ein solches Template hat oder mir sonst helfen könnte, wäre ich sehr dankbar.

Freundliche Grüsse

Karl


Antwort schreiben

Antwort 1 von sutadur vom 29.09.2020, 21:12 Options

Zitat:
Ich benütze WoltLab Burning Book 1.1.2 mit Captchas.
Nun bringt das aber rein nichts.

Das scheint mir aber irgendwie mangelhaft konfiguriert zu sein, vielleicht legt das Scripz die Zeichenfolge auch im Klartext auf dem Server ab. Eigentlich ist das ein recht guter Spamschutz.

Antwort 2 von Karl74 vom 29.09.2020, 21:36 Options

Ja das habe ich bis vor kurzem leider auch gedacht =/

glaube das hier ist das php-file welches die captchas generiert.
vieleicht könnt ihr daraus was lesen:

http://arcus9.ar.funpic.de/gb/

ps: auf dem server wird nichts geloggt. hab gerade nachgeschaut.

Antwort 3 von Klassenkasper vom 30.09.2020, 03:00 Options

Aloha
Es gibt mittlerweile Spam Bots die auch Captchas umgehen können, daher sind sie meines Erachtens nach kein wirklicher Schutz vor Spam
Das einzige was Captchas in meinen Augen verhindern sind Einträge von Besuchern die die Captchas nicht wirklich lesen können.

Wie dem auch sei, ich hab vor einiger Zeit mal ein GB mit einer Zeitschleife realisiert. Spambots haben die Angewohnheit, Scripte einmal durchzuscanen und dann ihren Spam abzuladen. In der nachfolgenden Zeit spamen sie einfach nur noch rein.
Und da habe ich angesetzt.
Beim ersten Aufruf des Scripts schreibe ich die Startzeit in ein hidden Field und übertrage das mit, wenn der User auf den Button "Eintragen" klickt. In dem Moment vergleiche ich in einer if Anweisung die neue Startzeit des Scripts mit der, die mit dem hidden Field übertragen wurde und setze eine Differenz von 15 Sekunden zwischen diesen beiden Zeiten. Da es ein User nicht schafft innerhalb von 15 Sekunden seinen Namen und eine Beitrag zu schreiben, ein Spambot das aber in dieser Zeit mehrfach machen kann, lasse ich diese Spams also erst garnicht zu. Erst wenn die 15 Sekunden überschritten sind und auch sonst alle Faktoren stimmen wird der Beitrag in die Datenbanktabelle geschrieben.
Spambots übertragen nämlich den Inhalt in den versteckten Feldern mit, und genau damit *Z*n sie sich ins Knie :-D
Und fertig ist die Laube....

Schützt zwar nicht vor menschlichen Spammern, aber die Bots hält es mit hoher Zuverlässigkeit aus dem GB raus.

Die Idee dazu bekam ich hier: Captcha Alternativen

Gruß
Des Kasperle

Antwort 4 von Karl74 vom 30.09.2020, 10:46 Options

aloha,
(macht gerade lust nach surfen. zum glück geh ich morgen in urlaub ^^)

also vielen dank für deine antwort.
hat mir sehr weiter geholfen.

hoffe ich habe das richtig verstanden, dass man ein unsichtbares feld (für den user) macht welche die spambots jedoch sehen und wenn dort etwas eingetragen wird, wird der beitrag nicht angezeigt.

jetzt weiss ich aber nicht wie ich das einbauen soll.
im admin-panel kann ich templates hinzufügen oder ein eingabefeld. wenn ich jetzt aber so ein template mit dem inhalt:
.nosee { display:none; }

<p class="nosee">
  <label for="email">Ihre eMail wird nicht abgefragt, tragen Sie auch hier bitte NICHTS ein:</label>
  <input id="email" name="email" size="60" value="" />
</p>

<?php
  if(isset($_POST['email']) && $_POST['email']) {
    # nicht eintragen, sondern Mitteilung über Spamverdacht
  }
?>

mache, wie kann ich es dann einbinden?


Freundliche Grüsse

Karl

Antwort 5 von Klassenkasper vom 30.09.2020, 13:53 Options

Hi Karl
Das hidden Field setzt du eigentlich direkt hinter den Button für den Eintrag ins GB.
Ich habe mein komplettes GB in ein einziges Script zusammengefasst, oben PHP und unten den HTML Teil.

Sieht bei mir so aus:

<? if (@$_GET['id']=="eintragen") {?>
<div id="ausgabebox" class="tabellen">
<form name="" action="" method="POST" enctype="text/html">
<p>Name:<br />
<input type="text" name="name" value="<?=@$_POST['name']?>" size="50" maxlength="150" />

<p>Eintrag:<br />
<textarea name="eintrag" rows="10" cols="50"><?=@$_POST['eintrag']?></textarea>
</p>

<input type="Submit" name="speichern" value="Eintragen" />
<input type="hidden" name="id" value="<?=Start?>" /> <-------- Das hidden field
</form>


value=<?=Start?> ist dabei die Startzeit des Scripts.
Wenn jetzt der User seinen Eintrag gemacht hat wird das komplette Script nochmal ausgeführt, und eine neue Startzeit gesetzt.
Ich fange von oben an mit den Abfragen:
Der folgende teil wird nur ausgeführt wenn auf den Eintragen Button gedrückt wurde, ansonsten wird es einfach übergangen:
if(isset($_REQUEST['speichern'])){
		if(empty($_POST['id'])){
			$id = $_POST['id'];}
				if($id != "") {

Als nächstes folgen ein paar Abfragen ob verschiedene Faktoren erfüllt sind:
$ip=mysql_num_rows(mysql_query("SELECT ip FROM gaestebuch WHERE ip='".$_SERVER["REMOTE_ADDR"]."'"));
		if($ip>=2){die("Mit dieser IP Adresse sind bereits Einträge vorhanden.
Um Spam zu verhindern wurde diese IP daher gesperrt. Versuchen Sie es bitte Morgen wieder.");}

		if(trim($_POST['name']=="")) {echo"Sie müssen einen Namen angeben. Bitte warten Sie 15 Sekunden 
bevor Sie erneut eintragen.";}
		
		if(trim($_POST['eintrag']=="")) {echo"Sie haben keinen Text eingegeben. 
Bitte warten Sie 15 Sekunden bevor Sie erneut eintragen";}

Die entscheidende Abfrage kommt jetzt:
if($id>=Start-15) {echo"Spamverdacht! Wir konnten Ihren Eintrag nicht annehmen. 
Versuchen Sie es erneut und lassen Sie sich etwas Zeit dabei.";}
$id definiere ich ein paar Zeilen weiter oben. Inhalt ist die erste Startzeit, die ich mit meinem hidden Field übertragen habe. Start ist die Startzeit des Scripts, die immer neu gesetzt wird. Und hier vergleiche ich sie beide gegeneinander.

if(trim($_POST['name']!="")and trim($_POST['eintrag']!="") and($id<=Start-15)) {
			mysql_query("INSERT INTO gaestebuch
							(ID, name, datum, text, ip)
						VALUES('', 
						'".trim(htmlentities($_POST['name']))."', 
						NOW(), 
						'".trim(htmlentities($_POST['eintrag']))."', 
						'".$_SERVER["REMOTE_ADDR"]."')") 
						OR die(mysql_error());

Und die letzte Abfrage vor dem Query in die Datenbank. Erst wenn alle Faktoren so sind wie sie sein sollen, also Name angegeben, Text ist da, und die Zeit stimmt, schieße ich den Beitrag in die Tabelle. Danach lasse ich mir eine Mail generieren mit dem Beitragsinhalt und einem Löschlink, um den Beitrag eventuell aus der DB zu löschen. Wegen der Humanspammer ;-)

So, wie hilft dir das nun?
Hast du eine Datenbanktabelle oder speicherst du das in eine .txt Datei?
Die Startzeit des Scripts defnierst du so:
define('Start', time());

Du definierst so eine Konstante, ich habe sie Start genannt. Und diese Konstante steht dir dann überall im Script zur Verfügung.

Die if Anweisung mit der Abfrage musst du vor den Teil des Scripts schreiben, in dem du den Eintrag wo auch immer eintragen lässt. Nur wenn die if Anweisung true ergibt, geht er weiter. Ergibt sie false, bricht er ab und du kannst eine Fehlermeldung ausgeben lassen.

Ich hoffe das war jetzt nicht allzu kompliziert erklärt :-)

Gruß
Des Kasperle

Antwort 6 von Karl74 vom 13.10.2020, 21:14 Options

hey,
so war im urlaub deshalb blieb dieses thema im abseits.

vielen dank für deine antwort,
jedoch kan ich damit nicht sehr viel anfangen, weil ichs auch nicht ganz verstehe.
wie soll ich die zeit in die datenbank speichern?
ja ich hab ne mysql-db.

aber wenn ein spambot jetzt irgend ne viertel stund nichts postet, kann er nacher trotzem den beitrag erstellen?

wäre es nicht einfacher ein hidden-feld einbaue, welches wohl nur die bots ausfüllen und wenn es ausgefüllt ist, den beitrag einfach nicht erstellen?


gruss
karl

Antwort 7 von katy vom 14.10.2020, 06:52 Options

Hallo Karl,

eine CSS-Lösung wie du sie in Antwort 4 schon mal hattest hat einen Riesen-Nachteil: Sie basiert auf CSS! CSS ist aber immer nur ein Vorschlag zur Darstellung im Browser. Mit ein paar lächerlich einfachen Mausklicks lässt sich jedes CSS-Styling komplett den eigenen Bedürfnissen anpassen (was bei manchen Farbkombinationen und anderen gestalterischen Katastrophen auch sinnvoll ist). Wenn also jemand auf deiner Seite ist ohne deinen CSS-Vorschlag zu nutzen, würde er selbstverständlich dein vermeintlich unsichtbares Feld ausfüllen. Und als Spammer für immer abgeschreckt werden.

Auch Kasperles Lösung ist für mich viel zu schnell dabei jemanden als Spammer zu diffamieren. Wenn ich eine derartige Botschaft bekäme wäre das mein letzter Eindruck von der Seite.

Mit solchen Behauptungen wie "Spamverdacht" sollte man sehr vorsichtig umgehen.

katy

Antwort 8 von son_quatsch vom 14.10.2020, 09:06 Options

Die beste Lösung ist immernoch etwas eigenes, denn ich denke die allerwenigstens Bots können von selbst erkennen, wie ein "Schutz" funktioniert.

So kann man sogar jede mögliche bestehende Board-Software nehmen (Woltlab oder phpbb) und Gäste Beiträge verfassen lassen, ohne dass sie sich registrieren müssen - wenn man das Verfassen eines Beitrags leicht erweitert.

Am besten ist die Frage nach einem Palindrom von mindestens vier Buchstaben. Oder die Eingabe des aktuelles Jahres. Oder das Ergebnis einer Rechnung, die man allerdings ausschließlich in Worten beschreibt ("drei plus vier ergibt?" statt "3+4=?").

Sobald du etwas vorgefertigtes nimmst trägst du zur Verbreitung des Mechanismus bei und erhöhst damit die Chance, dass jemand den Bots auch diesen Mechanismus beibringt.

Antwort 9 von Karl74 vom 14.10.2020, 09:23 Options

ist mir schon klar dass ich nicht eine bestehende lösung 1 zu 1 übernehmen kann.

aber da ich in php fast gar nichts kann, ist es für mich sehr schwer zu ein feld zu machen (mit ner rechnung etc.) und wenns dann die antwort dort falsch ist, den beitrag nicht zu posten -.-
deshalb bitte ich um hilfe.

Ähnliche Themen

frontpage Gästebuch erstellen..
Bamb...  27.03.2007 - 107 Hits - 2 Antworten

Gästebuch ohne internetanbindung
Burnt  06.06.2007 - 54 Hits - 5 Antworten

Gästebuch
+achmet  24.06.2007 - 77 Hits - 4 Antworten

gästebuch für hp
Chris---  28.02.2008 - 163 Hits - 5 Antworten

gästebuch bilder
maili  15.05.2008 - 80 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026