Alex: Captcha Schutz - Sessions?

Hallo,

ich habe mir ein Captcha script runtergeladen, das folgenderweise funktioniert.
Es werden 5 zahlen zufällig erzeugt, dann wird damit ein Bild erstelt in dem die Zahlen stehen. Die zahlen werden einzeln in Sessions gespeichert.
Im Sende-Script meines Formulars wird dann die Variable $code mit den 5 session-werten gefüllt und mit der eingabe $_POST['schutz'] verglichen.

Das habe ich gestern schnell nach eine riesen Spam-Mail welle eingebaut vor einer Stunde ist es dann wieder los gegangen.
Ich denke dass die Spambots (oder was auch immer das ist) einfach die Session auslesen und so auch den Code wissen. Oder sie sind noch raffinierter und können die Zahlen in dem Bild erkennen.

Was ist der sicherste Schutz - ausser wie jetzt, das Formular auszuschalten?
Ich habe mir überlegt dass ich den erstellten Code mit md5 verschlüssele und die eingabe danna mit md5 verschlüssele und diese werte vergleiche - dürfte doch sicher sein oder? (Vorrausgesetzt diese mistviecher können meine Bilder nicht lesen);

gruß
Alex

  1. Hello,

    Ich denke dass die Spambots (oder was auch immer das ist) einfach die Session auslesen und so auch den Code wissen. Oder sie sind noch raffinierter und können die Zahlen in dem Bild erkennen.

    bei einem normal konfigurierten Server besteht für einen externen Nutzer keine Möglichkeit auf die Inhalte einer Session zuzugreifen, ebensowenig wie auf deinen PHP-Code o.ä. Alles was der Client sieht ist das, was du ihm zuschickst. Wenn also dein Code erraten wird ist entweder das Captcha gut lesbar, oder du schreibst die Prüfsumme irgendwo mit raus.

    MfG
    Rouven

    --
    -------------------
    Ambition is the last refuge of failure.  --  Oscar Wilde (Irish Poet, Novelist, Dramatist and Critic, 1854-1900)
    1. DAnke für eure Antworten.

      ICh glaube jetzt - wieder einaml - dass ichs geschafft habe.
      Der Code war zwar nirgends rausgeschrieben aber es stand auch nirgends dass einer vorhanden sein muss. Wenn ich also das sende Script aufgerufen habe ohne vorher die Captcha zu laden = Session anzulegen UND das Code-Textfeld einfach leergelassen habe ging es auch weil beide Variablen leer waren.

      JEtzt muss $code != "" sein und der HTTP_REFERER muss von meine Domain kommen.

      Wenn das nicht sicher ist fress ich nen Besen (das wär dann schon der 2. inerhalb eines Monats - ich sollte das weniger oft sagen...)

      1. Hello,

        JEtzt muss $code != "" sein und der HTTP_REFERER muss von meine Domain

        letzteres ist schlecht. Damit kann ich leider deine Webseite nicht benutzen. Meine Firewall filtert den Referer raus...

        MfG
        Rouven

        --
        -------------------
        Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
        1. Das ist echt schlecht, na wenigstens ist es damit sicher ;)

          Also sollte ich das wohl mal wieder deaktivieren und nur die überprüfung auf eine nichtleere Variable da lassen...

          1. Es wird Spannend...

            in meinem Logfile habe ich schon 3 IPs von Spammern (Top rankings bei Google auf verspamte Gästebücher)
            Alle ohne Referrer aber dieser schutz ist jetzt drausen weil wir ja leute wie Rouven nicht ausschliessen wollen ;)

  2. hi,

    Es werden 5 zahlen zufällig erzeugt, dann wird damit ein Bild erstelt in dem die Zahlen stehen. Die zahlen werden einzeln in Sessions gespeichert.

    Wieso einzeln?

    Im Sende-Script meines Formulars wird dann die Variable $code mit den 5 session-werten gefüllt und mit der eingabe $_POST['schutz'] verglichen.

    Warum dann nicht gleich die fünf Ziffern in _einer_ Sessionvariablen ablegen?

    Das habe ich gestern schnell nach eine riesen Spam-Mail welle eingebaut vor einer Stunde ist es dann wieder los gegangen.
    Ich denke dass die Spambots (oder was auch immer das ist) einfach die Session auslesen und so auch den Code wissen.

    Das ist eigentlich nicht möglich.
    Die in der Session gespeicherten Daten kennt nur der Server (wenn er sie nicht selbst dem Client verrät).

    Oder sie sind noch raffinierter und können die Zahlen in dem Bild erkennen.

    Möglich, aber eher unwahrscheinlich - Verhältnis Aufwand<->Nutzen zu schlecht.

    Was ist der sicherste Schutz - ausser wie jetzt, das Formular auszuschalten?

    Diverse Ansätze wurden hier schon ettliche Male diskutiert - befrage mal das Archiv.

    Ich habe mir überlegt dass ich den erstellten Code mit md5 verschlüssele und die eingabe danna mit md5 verschlüssele und diese werte vergleiche - dürfte doch sicher sein oder?

    Welchen Zusatz an Sicherheit versprichst du dir davon?
    Der Client übergibt dir die Ziffernkombi '12345'.
    Ob du die serverseitig mit '12345' vergleichst, oder md5('12345') mit md5('12345'), macht absolut Null Unterschied.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Moin!

    Was ist der sicherste Schutz - ausser wie jetzt, das Formular auszuschalten?

    Es gibt diverse alternative Ansätze, die sowohl den User nicht mit solch einer Bilderkennung nerven, als auch die heute existierenden Bots zuverlässig abwehren (was sich aber - wie bei jeder technischen Maßnahme) jederzeit ändern kann.

    Ein Ansatz, der auch hier im Forum schon häufiger angeregt und mit Erfolgsmeldung versehen wurde, ist das Erstellen von zusätzlichen Sinnlosfeldern im Formular, welche mittels CSS unsichtbar gemacht werden, und deren Inhalt entweder leer bleiben muß, oder nicht geändert werden darf. Bots neigen dazu, alles, was vom Typ "text" ist, mit ihrem eigenen Inhalt zu füllen, und alles, was vom Typ "hidden" ist, unverändert zu lassen.

    Weiterhin scheint es dann und wann zu helfen, die Feldnamen der Formularfelder dynamisch zu generieren.

    Wenn man das geschickt kombiniert, könnte sich beispielsweise sowas abspielen: Ein oder mehrere Hidden-Felder mit festem Namen enthalten als Wert die Name-Wert-Kombination von dynamisch benannten und gefüllten anderen Hidden- und Textfeldern.

    Das Auswerteskript sucht nach dem Hidden-Feld mit festem Namen, entnimmt daraus die dynamischen Namen und Inhalte und prüft deren Vorhandensein und korrekte Ausfüllung.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
  4. Hi,

    Im Sende-Script meines Formulars wird dann die Variable $code mit den 5 session-werten gefüllt und mit der eingabe $_POST['schutz'] verglichen.

    wird $_POST['schutz'] durch eine manuelle Eingabe des "Users" oder durch ein von dir vorbelegtes Hidden Feld gefüllt? Wenn letzteres, ist das etwas witzlos.

    Oder sie sind noch raffinierter und können die Zahlen in dem Bild erkennen.

    Es gibt einige Tools, die sowas mehr oder weniger gut können (kommt auch sehr auf die Grafik, bzw. die Darstellung des Codes an). Siehe bspw. http://sam.zoy.org/pwntcha/. Aber das ist meist mit dem Verbraten von Rechenzeit verbunden und wird daher nicht wirklich oft gemacht. Die senden halt lieber 10000 Mails als 500 :) Und wenns bei dir nicht mehr klappt, ist der nächste reif. (Schade, dass man diese P****r nicht so einfach bei den E***n packen kann)

    Tschau, Stefan