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.phpDanke schon mal. Atomic
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)
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…
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…
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.
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>";
}
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.
Das heisst, man kann einmal das Captcha loesen, dem Skript die Session sagen, und beliebig oft spammen. Oder?
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.
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.
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.
Nachtrag: Fehler erkannt :-)
Danke euch!