Spam-Einträge in Gästebüchern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #46
    Hi again!

    Ich habe mir ein wenig Gedanken zu dem Thema gemacht, und mich für ein Bewertungssystem im Stile vom SpamAssassin entschieden.

    vor dem Eintragen der Daten in meine Datenbank/Liste rufe ich eine Funktion
    checkspam($name,$email,$homepage,$kommentar) auf, welche folgende Kriterien abcheckt:

    * sind alle Felder ident: 2 Strafpunkte
    * ist $kommentar leer, aber eines der anderen enthält Eingaben: 1 Strafpunkt
    * enthalten name, homepage oder kommentar eine Email-Adresse: 1 Strafpunkt
    * enthalten name, email oder kommentar eine URL (mit 'http'): 1 Strafpunkt
    * geschieht der Eintrag zwischen 2 und 6 in der Nacht? 1 Strafpunkt

    * ist die Absendedomain auflösbar und die TLD aus einer Vertrauensliste (at, de, ch): -1 Strafpunkt
    * ist die Absendeuhrzeit zwischen 10 und 15 Uhr: -1 Strafpunkt

    Konsequenz:
    ab 3 Strafpunkte: Blacklist
    ab 1 Strafpunkt: Hinweis mit entsprechender Fehlermeldung

    Falls ein Besucher die Seite besucht, wird zuerst einmal seine IP gegen die Blacklist abgeglichen. Falls darin enthalten, werden einfach keine Formularfelder, stattdessen ein Hinweis ausgegeben.

    lg Mitsch
    Zuletzt geändert von Mitsch; 13.06.2006, 18:24.

    Kommentar


    • #47
      Also ich hab das Problem gerade bei meinem Ex-Schwager gehabt, kurzerhand hab ich das jetzt per IP Blacklist gelöst, und nur einen Eintrag pro Stunde erlaubt, ich hab auch die Möglichkeit die Blacklist automatisch mit IP Adressen zu befüllen, wenn jemand meint, er müsse innerhalb der Stunde mehrere Einträge schicken, wobei mir die Problematik mit dynamischen IPs schon klar ist.

      Ich hab keine Lust dynamische Bildchen einzusetzen damit der User mehr machen muß, als nur den Submitknopf zu drücken. Mich nervt das auch immer auf anderen Seiten.

      Jedenfalls hab ich mir schon mal die nächsten Schritte überlegt, wenn das nicht reichen sollte.

      - Cookie setzen und auf Cookie prüfen (damit sind schon mal alle Bots draußen, die keine Cookies annehmen - tja und die paar Prozent User, die es in ihrem Browser auch nicht tun)

      - HTTP_USER_AGENT auf Browser prüfen (wieder ein paar Bots weniger, die sich nicht als Browser ausgeben)

      - per JavaScript bei onSubmit einen Fehler erzeugen und dann mittels onError doch das Formular zustellen, aber davor noch dynamisch form.action ändern (so, also spätestens hier muß der Bot passen und sich ein Programmierer die Seite anschauen, außer natürlich der Bot ist kein einfaches Script sondern läuft mit einer Browserengine), das normale Action führt natürlich wieder auf das Gästebuch selbst zurück ohne irgendeinen Eintrag (Nachteil für alle, die JavaScript ausschalten, aber die 2%...)

      Ich mach mir die nächsten Tage paar Gedanken, was man noch so alles machen könnte.

      Kommentar


      • #48
        Jetzt ist mir glatt nochmal was eingefallen:

        Da bei serverseitigen Imagemaps die Mausposition übergeben wird, könnte man prüfen, ob diese realistische Werte hat bzw. ob da überhaupt was übergeben wurde. Der Submitbutton ist natürlich diese Map.

        So und um das noch technischer (und noch unfreundlicher für Behinderte) zu gestalten, wird der Submit mittels einen JavaApplets realisiert, das sobald die Maus darüber ist einfach mal die Bewegung registiert. Es reicht eigentlich vollig aus zu prüfen, ob die Maus bewegt wurde. Wenn man jetzt das action Attribut für das Formular fest in das Applet kodieren könnte und in dem HTML Quelltext nur ein Dummy stehen würde, dann wäre man fein raus und selbst der beste Bot müßte wohl passen. Ich hab aber keine Ahnung, ob das geht. Meine Java Vorlesungen sind schon recht lange her aber ich erinnere mich, daß man von Java aus JavaScript steuern konnte (oder war's nur umgekehrt ?) und damit sollte es möglich sein das action Attribut gerade noch vor dem Abschicken zu ändern.

        Hm... u.U. könnte man das auch mit Flash machen.

        Kommentar


        • #49
          Das meiste ist ziemlicher Käse.

          Erst braucht's Cookies, dann Javascript, dann noch eine Maus, evtl. noch Flash ...
          Und die "klitzekleinen Prozentzahlen" von Nutzern, die Technik X nicht haben, summieren sich plötzlich.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #50
            @mitsch
            Ich glaube nicht, dass du so sehr weit kommen wirst. Jeder der dir aus den USA oder Asien (nach deren Arbeitszeit) einen Eintrag macht, hat ja schonmal einen Punkt auf sicher --> ich würde die Punkte nicht nach Uhrzeit vergeben.
            Auch könnte ein gemeiner Spammer dafür sorgen, dass er seinen Mist zwischen 10 und 15 Uhr einträgt (minus 1 Punkt) und via einen Proxy aus de,au oder ch verschicken (nochmals minus 1)
            Dann knallt er den Kommentar mit Links zu seinem Viagra Scheiss zu und du kannst nix dagegen machen.
            imho gibt es nur zwei einigermassen wirksame Konzepte gegen Spam:
            Entweder du servierst dem User ein Assoziatonsaufgabe, welche eine Maschine nicht erfüllen kann (Captcha oder ein Bilderrätsel) oder du verwendest einen lernfähigen Spamfilter mit Wortanalyse.
            Den Filter musst du natürlich erst ein wenig trainieren, aber dann sind solche statistischen Filter ziemlich unschlagbar. Natürlich sind die Suchalgos solcher Filter alles andere als einfach, aber vielleicht gibt es ja was fertiges in den Weiten des www
            Noch ne kleine Frage zum Schluss: Du wirst hoffentlich kein HTML in den Einträgen erlauben oder wenn nein dann zumindest filtern ?
            Falls ungefiltert erlaubt, dann würde ich mir um ganz andere Dinge sorgen machen, als um Spam...

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #51
              http://akismet.com/development/

              Kommentar


              • #52
                Die Prozentzahlen summieren sich ja eben nicht einfach. Wenn von mir aus 3% JavaScript ausgeschaltet haben und 5% Java ausgeschaltet haben und 4% keine Cookies annehmen, dann sind das eben keine 12%, die das Formular nicht benutzen können, sondern wahrscheinlich eher 6%-8%. Der Teil der Surferschaft wundert sich eh nicht, wenn auf einer Seite mal etwas nicht geht und weiß damit sowieso umzugehen. Der 0815-User hat nicht mal eine Ahnung, daß man Java ausschalten kann geschweige denn wo.

                Kommentar


                • #53
                  Der 0815-User hat nicht mal eine Ahnung, daß man Java ausschalten kann geschweige denn wo.
                  Aber du kennst den Unterschied zwischen Java und Javascript Dein 0815 User wird die JRE gar nicht installieren und damit hat er auch kein Java.

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #54
                    Original geschrieben von Silkeyes
                    sondern wahrscheinlich eher 6%-8%.
                    Also schon jeder 16. bis 12. Nutzer ...
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #55
                      @ 0815-User

                      Auf Windows ist Java im IE eh vorinstalliert und der 0815-User ist eben Windowsnutzer. Sollte er dennoch ein Linuxuser sein, dann installiert er spätenstens Java, wenn sein Lieblingschat nicht funktioniert (bzw. läßt das durch einen Bekannten machen).

                      @ jeder 12. bis 16. User

                      Stimmt, die haben erst mal Pech gehabt, wobei die Betonung auf erst mal liegt. Ich halte User, die nicht nur zufällig durch einem (Online-)Beitrag sich der Sicherheitsproblematik des Surfens bewußt sind für schlau genug bestimmte Funktionalitäten wenigstens zeitweise wieder einzuschalten, wenn es die Seite verlangt und wenn sie das Bedürfnis verspüren unbedingt den Gästebucheintrag zu machen. Wir müßten jetzt also irgendwie einen Prozentsatz schätzen, der sich auf User bezieht, der diese Funktionen auf seinem System ausgeschaltet hat und diese auch nicht selbst einschalten kann. Dazu fallen mir vor allem die Behinderten ein, deren Browser diese Techniken wohl nur unzureichend, weil eben für sie unsinnig, unterstützen. Aber wenn der Sehbehinderte (oder schlimmer Blinde) da 4 Zeichen aus einem Bild, bei dem ich mir schon Mühe geben muß zu erkennen welche es sind, in ein Textfeld eingeben muß, dann hat er eben auch verloren und zwar auf ganzer Linie.

                      Aber danke für die Anregungen, mir ist das heute noch im Kopf herumgegangen und ich bin auf Folgendes gekommen:

                      Wie wäre es mit einer Frage mit 5-10 Antwortmöglichkeiten und nur bei richtiger Beantwortung der Frage wird überhaupt was eingetragen ? Dann hast man noch eine von 5 Fragen zur Auswahl, die dann eben dynamisch ausgewählt werden, damit ein Robot nicht so eingestellt werden kann, daß er die Frage immer richtig beantwortet. Das sollte auch für Blinde funktionieren und die Fragen sind natürlich so einfach, daß es selbst ein Kind schafft, diese zu beantworten. Gut, nervig ist das natürlich trotzdem, aber eine Combobox halte ich immernoch für komfortabler als 4 Zeichen mit der Tastatur tippen.

                      Eine andere Überlegung (okay, dazu brauche ich tatsächlich mal wieder JavaScript) wäre es die Zeiten zu messen, die zwischen den Tastendrücken bei der Eingabe in ein Feld liegen. Menschen tippen anders als Scripte.

                      Kommentar


                      • #56
                        Original geschrieben von Silkeyes
                        Auf Windows ist Java im IE eh vorinstalliert
                        Quark.

                        XP bringt von Haus aus keine JVM mit, und ich habe auch bis heute noch keine.
                        JAVA im Web ist tot.

                        Stimmt, die haben erst mal Pech gehabt, wobei die Betonung auf erst mal liegt. Ich halte User, die nicht nur zufällig durch einem (Online-)Beitrag sich der Sicherheitsproblematik des Surfens bewußt sind für schlau genug bestimmte Funktionalitäten wenigstens zeitweise wieder einzuschalten
                        Können != Dürfen

                        Nicht überall hast du Zugriff auf die Einstellungen, Netzwerke in Firmen/Unis/etc.

                        Eine andere Überlegung (okay, dazu brauche ich tatsächlich mal wieder JavaScript) wäre es die Zeiten zu messen, die zwischen den Tastendrücken bei der Eingabe in ein Feld liegen. Menschen tippen anders als Scripte.
                        Und wenn ich meinen Text statt in einer fisseligen Textarea lieber im Editor vorschreibe, und dann per copy&paste einfüge ...?



                        Du willst eigentlich Spambots das Leben schwer machen - und zeigst dich dabei aber äußerst kreativ, dem menschlichen Nutzer die Bedienung der Seite zu verleiden.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #57
                          Und wenn ich meinen Text statt in einer fisseligen Textarea lieber im Editor vorschreibe, und dann per copy&paste einfüge ...?
                          Also, wenn ich nur auf diese Gruppe von Usern keine Rücksicht nehmen müßte, die das machen, dann wäre ich ja schon durch. Ich meine, wie hoch willst Du denn den Anteil beziffern ? Mehr als ein Promille ? Wohl kaum.

                          Aber es ist eigentlich egal, ob Du es per Copy&Paste machst oder nicht, weil die allermeisten Gästebücher habe zwei Felder die ausgefüllt werden wollen zum einen ist das der Name und zum anderen der Text (mehr ist optional) und Du wirst Deinen Namen bzw. Nickname ja wohl doch noch von Hand schreiben, oder ? Tja und diese Tastenintervalle werden eben auch registiert und damit unterscheidest Du Dich schon mal von einem Skript. :-p

                          XP ohne JVM ? Danke, wußte ich nicht, bei mir war das letzte Windows das 2000er.

                          Kommentar


                          • #58
                            Hoppla, noch ein kleiner Nachtrag zu dem Copy&Paste:

                            Ich kann ja auch abfragen, ob Du eine Tastaturkombination zum Befüllen des Feldes genommen hast, also müßtest Du es schon mit der Maus machen, damit ich Dich (für dieses Feld wenigstens) disqualifiziere. Wenn Du das nun auch mit dem Namensfeld machst, dann hast Du aber gewonnen. Jedenfalls vorerst. *g*

                            @ 4 Zeichen aus einem verwaschenen Bild eintippen
                            Userfreundlich klingt das ja auch nicht gerade, auch wenn's von der technischen Seite in jedem Browser funktioniert.

                            Noch eine Möglichkeit:
                            Das Eingabefeld befindet sich nicht oben sondern unten, jedenfalls so weit, daß man (wenigstens ein bißchen) scrollen muß. Tja und muß der User scrollen (Maus, Tastatur, per Stimmkommando) sagt JavaScript eindeutig, daß es wohl kein Script ist.

                            Kommentar


                            • #59
                              Deine bisherigen Ideen wie du Javascript einsetzen könntest, sind doch alle Humbug. Ganz abgesehen davon, dass es echte User auch deaktiviert haben können und es sich deswegen völlig verbietet, solltest du mal in Betracht ziehen, wie Spambots arbeiten.

                              Sie suchen nach Standard-Formularen, z.B. der Kommentarform der üblichen Blogs. Finden sie eins, senden sie einen Request an den ebenso standardisierten Empfänger des Formulars. Sie füllen nicht das Formular selbst aus! Das heißt, es werden keine Javascript-Events gefeuert etc.

                              Nun sind ja nicht nur Blogs und Freeware-Gästebücher betroffen. Zu viele Bots spammen auch in selbstgestrickte Formulare. Manche recht stupide, indem sie einfach einmal(!) Typen und Namen der Inputs lesen und daraus Requests generieren. Andere ganz doof - da werden nur die Namen gelesen und drauflos geballert, ganz gleich ob es nur Checkboxen sind.

                              Und dann gibt es aber auch die etwas ausgefeilteren Bots, bei denen ein Mensch einmalig deine Seite ansurft, manuell den Spam eintippt und abschickt. Der Bot nimmt das auf und wiederholt das fortan mit verschiedenem Spam. Da versagt so ziemlich jeder passive Ansatz (Tippgeschwindigkeit, Scrollen, JS-Events). Aber alles was vom User etwas Intelligenz erfordert, hilft dagegen sehr wohl. (Captchas helfen übrigens nicht! Niemehr und nirgends!)

                              Nun bin ich aber auch kein Freund von Fragespielchen und Tippaufgaben. Deshalb habe ich den Link oben gepostet. Hast du dir den mal angeschaut?
                              Wenn es dir zu trivial ist, den Text von einem externen Service prüfen zu lassen, kannst du ja auch eigene serverseitige Lösungen implementieren.
                              Manche Emailspamfilter lassen sich mit etwas Training sehr gut auch als Webspamfilter einsetzen. http://crm114.sourceforge.net/ zum Beispiel.

                              Spamerkennung nicht auf Kosten irgendwelcher User, nichtmal eines einzigen!
                              Zuletzt geändert von onemorenerd; 13.09.2006, 20:05.

                              Kommentar


                              • #60
                                Also so langsam regt es mich auf, daß man so ziemlich jede Möglichkeit eines Browsers verbieten will nur um des Prinzips willen. Wenn JavaScript nur dazu da ist um es abzuschalten, dann frag ich mich, warum es jeder moderne Browser unterstützt (und es 97% eingeschaltet haben), bei Flash sieht das nicht anders aus. Aber egal...

                                User:

                                1. Gästebuch wird aufgerufen, Gästebuch trägt zwei zufällige Werte check1 und check2, die beliebig groß, aber nicht zu klein sind in eine Datenbank mit Zeitstempel ein. Diese werden in hidden Feldern mit dem Formular mitgegeben.

                                2. User füllt Eintrag aus und schickt ihn ab.

                                3. Handler prüft, ob die mitgeschickten Werte noch aktuell sind, falls ja dann wird eingetragen und die Werte aus der Datenbank gelöscht.

                                Der böse aber hochintelligente Spambot:

                                1. Stellt seinen Eintrag für das Gästebuch aus einer Spamdatenbank zusammen.
                                2. Schickt den Eintrag an den Handler ab (natürlich mit jeweils einer neuen IP Adresse) mit zwei Werten, die er sich zuvor aus einem anderen Eintrag erschlichen hat.
                                3. Handler prüft, findet die Werte nicht in der Datenbank und trägt nichts ein.

                                Der böse aber noch viel intelligentere Spambot V2:
                                1. Stellt seinen Eintrag für das Gästebuch aus einer Spamdatenbank zusammen.
                                2. Schickt den Eintrag an den Handler ab und generiert zufällig zwei Werte für check1 und check2.
                                3. Handler prüft, findet die Werte nicht (bei zwei Werten ist die Wahrscheinlichkeit einer zufälligen Übereinstimmung wirklich winzig - der Prozenzsatz ist sogar noch niedriger, als der von Leuten, die für einen Gästebucheintrag einen Editor benutzen um den Text dann in die Textarea reinzukopieren) in der Datenbank und trägt nichts ein.

                                So und jetzt kommst Du...

                                Ach ja, zum Argument "Datenbank = Overkill": dann schreib ich die Werte eben in eine Datei ! PHP werd ich ja hoffentlich noch benutzen dürfen.

                                Kommentar

                                Lädt...
                                X