Gugug: gästebuch mit bestätigungs-bild-code

Hallo zusammen

Ich habe folgendes Problem:
Für ein Gästebuch generiere ich mit PHP ein Bild, auf welchem die aktuelle Unix-Zeit drauf ist. Diese sollte der Benutzer eingeben um sicherzustellen, dass kein "Roboter" irgendwelche 6-Seitenlinks reinplatziert.
Leider wird das Bild von den Browsern nicht immer frischgeladen. Was natürlich  nicht in meinem Sinne ist.
Habe schon:

<meta http-equiv="expires" content="0">
  <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">

gesetzt.

Ich finde das ganze eignetlich sehr komisch und kann es mir nicht erklären.

Danke für eure Hilfe.

Felix

  1. @@Gugug:

    Ich habe folgendes Problem:
    Für ein Gästebuch generiere ich mit PHP ein Bild, auf welchem die aktuelle Unix-Zeit drauf ist. Diese sollte der Benutzer eingeben um sicherzustellen, dass kein "Roboter" irgendwelche 6-Seitenlinks reinplatziert.

    Mit Captchas stellst du gar nichts sicher, sondern nervst nur die menschlichen Besucher deiner Seite.

    Siehe Wikipedia und </archiv/2006/12/t142924/#m928436> und dortige Links.

    Lass den Unsinn am besten sein und sichere dein Formular mit sinnvolleren Methoden.

    Live long and prosper,
    Gunnar

    --
    „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
    1. Hallo,

      Mit Captchas stellst du gar nichts sicher, sondern nervst nur die menschlichen Besucher deiner Seite.

      Richtig, die meisten (bessergesagt alle) Captchas knackt ein Bot locker. Und wenn ich das richtig verstanden hab, hast du nur ein Bild, wo NUR die Zeit draufsteht (?)... Das wird von den meisten Bots geknackt.

      Ich hab vor wenigen Tagen ein Captcha entdeckt, was ziemlich gut ist (Glaube ich). Hier!

      Lass den Unsinn am besten sein und sichere dein Formular mit sinnvolleren Methoden.

      zum Beispiel?

      MfG

      1. Hi,

        Ich hab vor wenigen Tagen ein Captcha entdeckt, was ziemlich gut ist (Glaube ich). Hier!

        weitere Variante: GalaxyNews (Achtung, ein Klick in die Grafik entspricht einer Stimme für ein Online-Spiel.)

        Lass den Unsinn am besten sein und sichere dein Formular mit sinnvolleren Methoden.
        zum Beispiel?

        Beispiele sind in den von Gunnar genannten Quellen vorhanden.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Ich hab vor wenigen Tagen ein Captcha entdeckt, was ziemlich gut ist (Glaube ich). Hier!

          weitere Variante: GalaxyNews

          Vielleicht bin ich ja blind oder blöd (oder beides), aber bei diesen Beispielen handelt es sich doch wohl um einen Scherz. Man möchte als Besucher etwas beitragen, aber anstatt dafür freundlich empfangen zu werden, muss man erstmal fünf Minuten rätseln. Lächerlich, grotesk, albern.

      2. Danke an die Beantworter. Ich muss die unzimperliche Kritik wohl zuerst verdauen und werde mir dann was neues überlegen.
        Naja, es ist ja nicht so, dass die Seiten die ich programmiere "gut" besucht werden, da es kleine Projekte sind. Aber dennoch braucht es einen einfachen Schutz, der das meiste abhält.
        Ich habe keine Lust gross mit DBs zu arbeiten und da war der Zeitstempel eine komfortable und einfache Methode.
        Das mit dem header() habe ich noch nicht ganz auf die Reihe bekommen. Dazu muss ich vielleicht sagen, dass die Bildcode-Funktion ein Bild erstellt und auf dem Server ablegt und nicht direkt dem Browser übergibt. Also kann ich keine HeaderInfos zum Bild mitschicken, oder?
        Danke für die Antwort, nur zum Verständnis, und ich werde mir was anderes überlegen bevor ich nochmals "zerfleischt" werde ;-)
        Felix

        1. Naja, es ist ja nicht so, dass die Seiten die ich programmiere "gut" besucht werden, da es kleine Projekte sind. Aber dennoch braucht es einen einfachen Schutz, der das meiste abhält.

          Ein einfacher Schutz, der auch tatsächlich einfach ist, reicht meist völlig, denn der beste Botschutz hat nicht die ausgefeilste Technik, sondern ist einfach nur einzigartig.
          Je mehr Webseiten ein System nutzen, desto günstiger wird das Knacken der einzelnen Installation. Ein Bot für 1000 € kostet bei einem System, dass auf 10.000 Seiten im Einsatz ist, nur 10 Cent pro Werbung. Bei einem System, das nur auf einer Webseite aktiv ist, kostet die einzelne Werbung 1000 €. Auf welches sich die Spammer stürzen werden, dürfte offensichtlich sein.

          Du kannst es dir also wirklich einfach machen und zum Beispiel ein Dutzend dumme Fragen einbauen, etwa: "Wo wachsen Bäume? [ ] Mond, [ ] Sonne, [ ] Erde". Wenn du etwas Lustiges einbaust, hat das ganze sogar Unterhaltungscharakter.

          Das Kontaktformular auf meiner Seite ist übrigens gänzlich ungeschützt. Als das Thema beim letzten Mal aufkam, hatte ich vorsichtshalber nochmal geprüft, ob es noch funktioniert (ja, es funktioniert), weil es mich nach den ganzen Horrorgeschichten anderer Leute wunderte, dass das Ding spamfrei bleibt.
          Das Einzige, was es vielleicht von anderen unterscheidet, ist, dass es per robots.txt von der Indizierung durch Suchmaschinen ausgeschlossen ist, schlicht, weil ich in der Indizierung keinen Nutzen sah. Ob das nun tatsächlich der Grund sein sollte oder ich bislang lediglich Glück hatte, weiß ich nicht. Aber du kannst es ja mal ausprobieren.

          Ich habe keine Lust gross mit DBs zu arbeiten und da war der Zeitstempel eine komfortable und einfache Methode.

          Das ist auch in Ordnung, das Problem bei dir ist die Grafik, die sich leichtens mittels Zeichenerkennung automatisiert auslesen lässt.

          Das mit dem header() habe ich noch nicht ganz auf die Reihe bekommen.

          header("Cache-Control: no-cache");

          Dazu muss ich vielleicht sagen, dass die Bildcode-Funktion ein Bild erstellt und auf dem Server ablegt und nicht direkt dem Browser übergibt. Also kann ich keine HeaderInfos zum Bild mitschicken, oder?

          Nein, dann nicht, da hast du wieder das gleiche Problem wie mit den <meta>-Angaben: Andere Baustelle.

          Es ist aber eh ein Umweg, erst eine Datei zu erstellen. Wenn du imagepng() keinen Dateinamen übergibst, schickt die Funktion die Grafikdaten direkt an den Browser. Mit

          header("Cache-Control: no-cache");
          header("Content-type: image/png");

          imagepng($bild);

          müsste sich das Cache-Problem daher lösen lassen. Achte jedoch darauf, dass im PHP-Skript als aller Erstes <?php steht und als aller Letztes ?>, keine Leerzeichen, keine Zeilenschaltungen davor bzw. dahinter, gar nichts.

          Aber dies nur zur Theorie, in der Praxis hast du ja, wie schon überdeutlich klar geworden sein sollte, ein ganz anderes Problem.

        2. Hi,

          Aber dennoch braucht es einen einfachen Schutz, der das meiste abhält.

          wie wäre es mit einem Schutz, der alles abhält und dennoch echte Besucher nicht stört?
          Meine Alternative zu Captchas tut dies sehr zuverlässig.

          freundliche Grüße
          Ingo

      3. Hi,

        Ich hab vor wenigen Tagen ein Captcha entdeckt, was ziemlich gut ist (Glaube ich). Hier!

        Weitere Variante: http://forum.de.selfhtml.org/archiv/2006/7/t132678/

        Grüße,

        Jochen

        --
        Kritzeln statt texten:
        Scribbleboard
      4. Hallo,

        ein beispiel wäre doch mit Sessions ein "Token" System zu bauen.

        Beim erstellen des Formulares mittels PHP wird irgend ein md5() Hash erstellt. Dieser wird dann einmal in eine Session gespeichert und dann in einem hidden-Feld im Formular eingetragen.

        Auf der nächsten Seite wird dann der inhalt der Session mit dem Inhalt des Feldes verglichen. Gibt es einen Unterschied, so wird der Spamverdacht gemeldet ansonnsten wird getan, was auch immer das Skript tun soll.

        Das müsste 1. Funktionieren, weil die Bots _glaube ich_ soweiso keine Sessions können, oder?
        2. müsste es funktionieren, weils die Formularergebnisse ja oft durch fremde Seiten an das "Verarbeitungs-Skript" gesendet werden und nicht über das eigentliche Formular - also KANN gar keine Session vorhanden sein - schon recht keine richtige.

        Nutze dieses System zur Zeit bei vielen Formularen als Reloadsperre (Session wird nach dem 1. Aufruf gelöscht), denke aber, dass es Spammer auch abhalten müsste.
        Was mein ihr?

        gruß
        Alex

        1. Das müsste 1. Funktionieren, weil die Bots _glaube ich_ soweiso keine Sessions können, oder?

          Ich frage mich, woher (allerdings gerade bei Suchmaschinenspammern, nein, -optimierer heißen die ja) die weit verbreitete Annahme kommt, die Gegenseite (Suchmaschine, Spammer) sei auf jeden Fall dümmer als man selbst.

          Bitte verstehe das ausdrücklich nicht so, dass du dumm wärest, aber wenn du darauf kommst, dass ein Bot mit Cookies umgehen können müsste, dann wird es ein Botprogrammierer, der seine monatlichen €-Tausender wert ist, unter Garantie auch. Zumal die Implementierung von Cookie-Code um einiges leichter ist als einem Bot das Lesen beizubringen. Und letzteres können Spambots, deswegen ist diese ganze Bild-Captcha-Geschichte IMHO eine weitestgehend tote Kuh, da zuckt bestenfalls noch ein Öhrchen.

          1. müsste es funktionieren, weils die Formularergebnisse ja oft durch fremde Seiten an das "Verarbeitungs-Skript" gesendet werden

          Oft? Woher weißt du das? Irgendwo gehört oder hast du verlässliche Daten?

          Davon abgesehen: Dass ein Formular mitsamt Spamdaten erst unter einer fremden URL aufgebaut wird, nur um dort mittels eines Browsers an das Zielskript abgeschickt zu werden, halte ich für höchst unwahrscheinlich, weil viel zu aufwendig.
          Das Zusammenstellen eines Formulardatensatzes ist keine Hexerei, sowas kriegt jeder Bot von ganz alleine hin. Es kann höchstens sein, dass der Bot etwas zu sparsam ist und Daten schickt, ohne vorher das Formular abzurufen - dann hilft die Cookie-Methode in der Tat.

          Fremde Seiten sind da aber nicht im Spiel. Da Einzige, was gemacht wird, ist das Durchleiten von Bild-Captchas an Pornoseiten zwecks humanoider Entschlüsselung. Aber auch da werden keine Daten von einer fremden Seite direkt an das betroffene Formular geschickt.

          1. Hallo Gonzo,

            danke für deine Antwort!

            Das mit den Sessions habe ich mal irgendwo gehört - glaube ich. Ist aber vielleicht auch schon eine Weile her und nicht mehr aktuell.

            Die andere Sache mit den "fremden Seiten". Ja das habe ich so gemeint wie du erklärt hast, das eben nicht vorher das Formular aufgerufen wird sondern gleich Daten gesendet werden - wusste nicht genau wie das funktioniert.

            Das war bei der Spam Attake die ich erlebt habe immer der Fall so weit ich weis - diese habe ich dann aber allerdings mit Captchas auf die schnelle bekämpft. Bin immer noch auf der Suche nach der perfekten Lösung ohne diese scheiss Captchas (rege mich ja selbst immer drüber auf wenn ich so eines ausfüllen muss)

            gruß
            alex

  2. Für ein Gästebuch generiere ich mit PHP ein Bild, auf welchem die aktuelle Unix-Zeit drauf ist. Diese sollte der Benutzer eingeben um sicherzustellen, dass kein "Roboter" irgendwelche 6-Seitenlinks reinplatziert.

    Für dein Problem gibt es eine ganz einfache Lösung. Da das Bildchen jenen unter Paypal, SCode oder 20six einsortierten recht ähnlich sieht und du somit davon ausgehen kannst, dass du deine Besucher mit dem Ding weitaus mehr nervst als irgendeinen Bot: Entsorge die nutzlose Funktion und denke dir was neues aus.

    Hier im Forum war erst vor zwei, drei Wochen eine Diskussion zum Thema, dort gab es auch eine Reihe Anregungen.

    Leider wird das Bild von den Browsern nicht immer frisch geladen.

    <meta http-equiv="expires" content="0">
      <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
      <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">

    Das betrifft samt und sonders die Seite, nicht das Bild. Benutze header(), um die entsprechenden HTTP-Daten zusammen mit dem Bild auszugeben.

  3. hi $name,

    captchas sind einfach nur nervig für die besucher und helfen nicht wirklich.

    ich benutze Akismet http://akismet.com/ und bin sehr zufrieden. bei meinem GB hatte ich am ende über 100 spamversuche pro tag und ALLE wurden abgefangen, legitime einträge kamen anstandslos durch.

    es gibt noch ein anderes system, welches ähnlich arbeitet http://defensio.com/

    gruss
    shadow

    --
    Programmers don´t die, they GOSUB without RETURN.
    Quelle: unbekannt