FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Gästebuch- Spamattacken- Lösung

Gästebuch- Spamattacken- Lösung 2007-03-06 14:40
Atomic
Hallo.
Ich habe ein Gästebuch gemacht (PHP). Zur Vermeidung von Spam-Einträgen, habe ich ein captcha eingebaut. Nun muss ich feststellen, dass trotz captchas, Spam-Einträge vorhanden sind. Zuerst nur vereinzelt, später in Abstand von ca 5 sec. Modifizierung des captchas (jedes Zeichen hat eine zufällige Schrift) bring auch nichts.

Ist es irgendwie möglich das captcha zu umgehen? Sicherheitslücken in php oder so?..
Könnt ihre vielleicht Sicherheitslücken entdecken? PS. Javascript injektion ist mir bekannt. Ich habe das noch nicht behoben. Im Texteditor funktioniert JScript injektion nicht.

Hier der link http://www.die-russischen-baeren.de/de2004/guestbook.php
Danke schon mal. Atomic

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 15:27
tilo
Ne Sicherheitslücke kenne ich da nicht - und gerade leihct zu decoden sieht dein captcha auch nicht aus (zumal es für den Menschen schon ziemlich schwer zu entziffern ist, da des öfteren die Buchstaben/Zahlen nur zur Hälfte zu sehen sind)

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 15:30
Da:Sourcerer
Ich sehe da soweit auch nichts. Kannst du evtvl. mal den Code posten, der das eingegebene Captcha mit dem generierten vergleicht? Vielleicht läuft da was schief…

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 16:12
jfk
Das einzige, was mir dazu einfällt, ist das hier http://yro.slashdot.org/yro/04/01/28/1344207.shtml Aber ob das hier passt…

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 16:26
korelstar
Läuft das Captcha mit Cookies? (Wenn nicht, ist mir nicht klar, wie du die Eingabe verifizierst). Was passiert, wenn man keine Cookies akzeptiert? Vielleicht liegt da ja das Problem.

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 16:41
Atomic
Ich benutze keine cookies, sondern Session.
Ein Skript welches ein captcha generiert legt den Wert in eine Session.
Später prüfe ich ob die eingegebenen Zeichen, mit denen in Session übereinstimmen.

$sess_captcha = $_SESSION["captcha"];
$param_captcha = $_POST["captcha"];

if (isset($sess_captcha) && $param_captcha != $sess_captcha)
{
$status_text .= "- Zigriffscode Falsch! Bitte geben Sie den Zugriffcode richtig ein um Missbrauch zu vermeiden.<br>";
}

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 16:46
korelstar
Ich benutze keine cookies, sondern Session.
Die Session-ID wird aber wiederum in einem Cookie gespeichert. Wenn man keine Cookies akzeptiert, wird beim Absenden wieder eine neue Session angelegt und $sess_captcha ist nicht gesetzt, also wird der Benutzer offensichtlich durchgelassen.

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 16:47
UncleOwen
Das heisst, man kann einmal das Captcha loesen, dem Skript die Session sagen, und beliebig oft spammen. Oder?

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 16:48
korelstar
Das heisst, man kann einmal das Captcha loesen, dem Skript die Session sagen, und beliebig oft spammen. Oder?
Warum so kompliziert? Einfach jedes mal eine neue Session erstellen lassen, s.o.

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 16:48
UncleOwen
Ich benutze keine cookies, sondern Session.
Die Session-ID wird aber wiederum in einem Cookie gespeichert. Wenn man keine Cookies akzeptiert, wird beim Absenden wieder eine neue Session angelegt und $sess_captcha ist nicht gesetzt, also wird der Benutzer offensichtlich durchgelassen.
Uh, und das auch noch. Hatte den Code gar nicht so genau angeguckt.

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 17:01
Atomic
Also…

Das Capcha wird mit Hilfe eines .php Scriptes erstellt. Dieser speichert in der Session den Code, sowie generiert entsprechendes Bild für den Besucher. Dieser Code liegt nun auf dem Server. Das einzige was der Client nun kennt ist ja die Session ID an sich. Also gibt es keine Möglichkeit an den Code ranzukommen. Ob nun eine neue Session generiert wird oder nicht, spielt an dieser Stelle keine Rolle. Denn die Einzige Möglichkeit einen Gästebucheintrag zu erstellen, ist zusätzlich den richtigen Code einzugeben, welcher auf dem Server in einer Session-Datei liegt. Somit sehe ich eigentlich keine Möglichkeit diesen Schutzmechanismus umzugehen.

Re: Gästebuch- Spamattacken- Lösung 2007-03-06 17:10
Atomic
Nachtrag: Fehler erkannt :-)

Danke euch!