Zum Inhalt springen

Spambot Einträge reduzieren/verhindern


pascal87

Empfohlene Beiträge

Hallo!

Ich habe für meine private Homepage ein Gästebuch in php geschrieben und schon bevor die Seite fertig und verlinkt ist hatte ich es recht häufig mit Spambot-Einträgen á la "Viagra for free" zu tun.

Nun habe ich mich erstmal für eine "Quick and Dirty" Löung des Problems entschieden (ich frage in einem Feld die Summe aus 2+2 ab, wenn diese nicht eingegeben wird, wird nichts übergeben -> kein Eintrag). Dies habe ich gemacht, weil ich php-Einsteiger und noch nicht in der Lage bin eine Zufallszahl zu generieren, aber ich arbeite dran...

Was für Mittel und Wege nutzt Ihr um Einträge von Spambots in Gästebüchern/Kommentarfeldern zu reduzieren/verhindern?

Habt Ihr irgendein Tipp/Link für mich, wo man genug Grundwissen sammeln kann Zufallswerte aus einer bestimmten Menge mit php zu generieren?

Was haltet Ihr von dem Gästebuch aus technischer Sicht, was muss ich aus eurer Sicht unbedingt noch ändern, bevor ich es einsetzte?

Link: Peter Soltau Gästebuch

php Code:

<?php

// Dateiname in Variable speichern

$datei = "comment.txt";

// Variable Kommentar gesetzt? Name und E-Mail nicht leer?

if (isset($_POST['comment']) && $_POST['name'] != "" && $_POST['email'] != ""

&& $_POST['passwort'] == "4")

{

$comment = $_POST['comment'];

$name = $_POST['name'];

$email = $_POST['email'];

$passwort = $_POST['passwort'];

$comment = explode(" ", $comment);

$l=count($comment);

$counter=0;

while($counter<=$l) {

$comment[$counter] = wordwrap($comment[$counter], 106, "<br />", 1);

$counter++;

}

$comment=implode(" ", $comment);

// Datei wird zum Schreiben-Lesen geöffnet

$zeiger = fopen($datei, "r+");

// alte Daten herauslesen und in $alt sichern

$alt = fread($zeiger, filesize($datei));

// E-Mail-Link entsteht

$email =$email;

// Datum ermitteln und formatieren

$datum = date("d.m.Y");

$zeit = date("H:i:s");

// HTML-Zeichen maskieren, Slashes entfernen, Zeilenumbrüche erhalten

$comment = stripslashes(nl2br($comment));

// Meinung "zusammensetzen"

$meinung="<p>$name [$email] schrieb am $datum um $zeit:<br>$comment\n</p>\n";

// Cursor zum Anfang

rewind($zeiger);

// neue Meinung vor alte in Datei schreiben:

fwrite($zeiger, "$meinung \n $alt");

// Datei schließen

fclose($zeiger);

}

// Datei anzeigen

readfile($datei);

?>

Ich freue mich über alles an konstruktiver Kritik / Verbesserungsvorschlägen ;-)

Edit: $email =$email; ist so natürlich unsinn, liegt an einigen Experminten..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo!

Erstmal vielen Dank für eure Meinungen/Vorschläge.

@aLeXL: Habe ein Captcha eingebaut und es lief auch wunderbar, nur habe ich an dieser Stelle die gleichen bedenken wie Mascha hinsichtlich sehbehinderter Personen, außerdem mag ich die Teile selbst nicht, habe es also wieder rausgenommen.

Habe jetzt erstmal wieder eine einfache Frage eingebaut "Wo steht das Brandenburger Tor", vieleicht, um nicht-deutschsprachige User nicht aususchließen auch eine einfache Rechenaufgabe (wäre ja auch als Captcha denkbar) und dann einfach mal schauen, wie es läuft, denke die derzeitigen Robots kommen damit nicht klar, zumindest bis jetzt nicht. ;-) Das Problem der Handspammer ist natürlich kaum lösbar, bloß habe ich damit kaum zu tun.

Link zu diesem Kommentar
Auf anderen Seiten teilen

:D ok, gibt sicher Fragen, die besser geeignet sind!

Ich denke darüber (Unterscheidung Mensch/Maschine) kannst du Doktorarbeiten schreiben ;)

Captchas sind ja nur ein Weg (und, wie oben auch angesprochen, kein unumstrittener). Fragen wie deine sind z.B. ein anderer.

Das könntest du auch ausbauen und eine kleine DB anlegen mit ID, Frage und Antwort. Beim Anzeigen der Seite wird die ID hidden im Formular mitgegeben und am Ende prüfst du die Antwort.

Fragen wie z.B. "Wie ist der Vorname von Franz Beckenbauer?", oder "Welcher Wochentag war Sonntag der 11. März 2007?" oder auch "Was ist 2 plus 2?" wären da angebracht.

Noch sind Computer nicht intelligent genug um dafür eine Lösung zu finden. Wenn sich das ändert kannst du dir dann immernoch was anderes überlegen wie du sicherstellen kannst, ob da ein Mensch vorm Computer sitzt (oder du bist bis dahin Dr. rer. nat. der Informatik mit dem Thema :D ).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Salut,

ich finds als User sackig, noch eine Frage beantworten zu müssen oder ein Captcha zu entziffern. In meinem GB habe ich das so gelöst: Im Eingabeformular ist ein Input, das nicht angezeigt wird - der Benutzer sieht es nicht und kann dementsprechend nichts eintragen. Bei der Auswertung der Daten überprüfe ich das Textfeld - steht was drin, wars ein Bot.

HTML:

<form ...>

...

<input type="text" name="yourtext" class="yourtext" value="" />

</form>
CSS:
input.yourtext { display:none; }
PHP:
if ($_POST['yourtext'] <> "") {

  header("Location:http://web.mit.edu/dmax/www/pics/****you.jpg");

  die();

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Salut,

ich finds als User sackig, noch eine Frage beantworten zu müssen oder ein Captcha zu entziffern. In meinem GB habe ich das so gelöst: Im Eingabeformular ist ein Input, das nicht angezeigt wird - der Benutzer sieht es nicht und kann dementsprechend nichts eintragen. Bei der Auswertung der Daten überprüfe ich das Textfeld - steht was drin, wars ein Bot.

Im Prinzip eine gute Idee, allerdings habe ich auch schon Besucher gehabt, die offensichtlich händisch einiges ausprobieren, bis sie durchkommen. Das schließe ich daraus, daß ich mal diverse Fehlversuche direkt nacheinander hatte, bis mein Schutzmechanismus "geknackt" war. Der Spammer konnte es dann nicht lassen, noch einen Eintrag abzusetzen mit dem Inhalt "I'm smiling."

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nachtrag zum Thema:

Bei Microsoft (gelesen in der aktuellen c't) hatte man eine gute Idee, wie man zwischen Mensch und Maschine unterscheiden kann. Man zeigt einfach zwei Bilder an (im Beispiel einen Hund und eine Katze), und läßt den Anwender z.B. die Katze anklicken. Ein Bot weiß nicht, wie eine Katze aussieht ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei Microsoft (gelesen in der aktuellen c't) hatte man eine gute Idee, wie man zwischen Mensch und Maschine unterscheiden kann. ...

Die unterscheidet sich aber IMHO überhaupt nicht (außer dass es ein Bild ist) von der Lösung mit einer Frage wie "Wie ist der Vorname von Franz Müller?". Für einen Menschen ist die Antwort ganz offensichtlich, für eine Maschine nicht. Wobei es ansich für eine Maschine durchaus möglich ist, eine Katze von einem Hund zu unterscheiden. Wenn es für Computer möglich ist, einzelne Menschen per Kamera auch in einer Menschenmenge zu verfolgen (auch wenn der Computer davor nur ein Bild des Menschen kannte), stellt die Unterscheidung Hund/Katze theoretisch nur eine Fingerübung dar.

Ich weiß hingegen nicht, wie weit man beim Verständnis von menschlicher Sprache ist. Also ob ein Computer fähig ist eine solche einfache Frage zu verstehen (muss ja nicht immer diese eine sein, nach diesem Muster halt, dass die Antwort in der Frage schon mitgegeben wird).

Ok, für Spambots sollte das schon unüberwindlich sein ;) Aber zur Unterscheidung Mensch/Maschine ansich finde ich das keine gute Lösung, denn es würde eine einfache Mustererkennung und ein Vergleich mit einer hinterlegten Datenbank reichen, IMHO, für die Maschine. Und dazu ist ein Computer durchaus schon fähig.

EDIT:

Ist das nur Zufall gewesen, oder kommt das gesuchte Tier beim KittenAuth Test immer 4 mal vor (im Gegensatz zu den anderen Tieren)?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die unterscheidet sich aber IMHO überhaupt nicht (außer dass es ein Bild ist) von der Lösung mit einer Frage wie "Wie ist der Vorname von Franz Müller?".
Stimmt. Aber gerade in Verbindung mit den Tierbabys erhöht es die Benutzermotivation enorm, finde ich.

dazu ist ein Computer durchaus schon fähig.
Jup, aber bis die Spammer entsprechend ausgestattet sind... ;)

Ist das nur Zufall gewesen, oder kommt das gesuchte Tier beim KittenAuth Test immer 4 mal vor (im Gegensatz zu den anderen Tieren)?
Hatte eben nur drei Mini-Elefanten anzuklicken ;)
Link zu diesem Kommentar
Auf anderen Seiten teilen

Jau, aber der Spambot kann auf diese Weise sehr einfach überprüfen, ob er ver*rscht werden soll. Der Umweg übers CSS machts schwieriger.

Aber auch nur sehr geringfügig. Der Algorhitmus zum CSS-Klassen auf display: none o.ä. zu prüfen dürfte kaum ein Aufwand sein (für einen ernstzunehmenden Spambotprogrammierer wohl auch eher eine Herausforderung).

Denke mit der Lösung bist du sicher, weil sich keiner drum kümmert, weil es so praktisch kaum gemacht wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...