Überprüfung von Formulardaten

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

  • Überprüfung von Formulardaten

    Hallo! Ich habe ein Gästebuch, und möchte es ein wenig sicherer gestalten.

    Gibt es die Möglichkeit eine Überprüfung durchzuführen, dass die Daten, die in die Datenbank geschrieben werden nur von einer bestimmten Datei gesendet werden dürfen? (z.B. eine bestimmte HTML oder PHP-Datei)

    Mfg David

  • #2
    Jain,

    zum einen mittels dem Referer. Den kann man aber fälschen oder gar nicht erst mitsenden. Also nicht 100% sicher.

    Kannst auch ne Session starten und auf der eintragseite überprüfen, ob die noch gültig ist. Natürlich auch nicht 100% sicher.

    Alternativ könntest du satt der Session ein Cookie verwenden. Ist immer noch nicht 100% sicher.

    Du kennst aber sicher diese netten Bildschen mit so verschnörkelt und gedrehten Zahlen. Mit diesem Verfahren kannst du relativ sicher gehen, dass die Daten wirklich von DEINER Formularseite kommen.

    Kommentar


    • #3
      Danke für deine Hilfe, Deine aufgezählen Möglichkeiten habe ich in mein Guestbook schon eingebaut. (hat aber nicht sehr viel geholfen)


      Es bleibt mir doch nichts anderes über als Captcha in mein Guestbook einzubauen.

      Mfg Dave

      Kommentar


      • #4
        psychologische lösung: einträge erst nach Freischaltung anzeigen.

        Kommentar


        • #5
          der gedanke ist mir in der form ja noch nie gekommen, aber jetzt, wo tobiaz es erwähnt:

          - ein beitrag wird erst nach der freischaltung angezeigt.
          - wenn die freischaltung nicht innerhalb von 3 tagen erfolgt, wird der datensatz automatisch gelöscht.

          so schaut man gelegentlich in sein email-postfach und kümmert sich nur um die freischaltung korrekter einträge. der rest wird zeitverzögert eliminiert.

          Kommentar


          • #6
            Original geschrieben von penizillin
            der gedanke ist mir in der form ja noch nie gekommen, aber jetzt, wo tobiaz es erwähnt:

            - ein beitrag wird erst nach der freischaltung angezeigt.
            - wenn die freischaltung nicht innerhalb von 3 tagen erfolgt, wird der datensatz automatisch gelöscht.

            so schaut man gelegentlich in sein email-postfach und kümmert sich nur um die freischaltung korrekter einträge. der rest wird zeitverzögert eliminiert.
            ist das nicht für ein dummes Gästebuch etwas zuviel des Guten? Oo,

            ka, was ihr da erwartet, aber selbst wenn ein Spammer auf die Idee kommen sollte das Skript zu missbrauchen, dann tuts ggf. ein Query allá
            DELETE FROM gb WHERE datum > DATE_SUB(NOW(), INTERVAL 1 DAY)
            und der Müll ist weg *zuck*

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Du kannst auch einen Code erzeugen, den in die Session speichern und per Hidden-Input Feld in deinem Gästebuch mitsenden. Wenn die beiden Codes übereinstimmen, dann kommt der Eintrag von der richtigen Seite. (Ach ja: Stichwort CSRF - Cross Site Request Forgeries)

              Falls du dich vor Spam schützen willst, so komme ich in meinem Gästebuch mit einem simplen wort-basierten Spam-Filter sehr gut zurecht. Ist natürlich nur eine rudimentäre Lösung, und man muss es immer anpassen, aber für meine Zwecke reicht es. Immer wenn Spam im Gästebuch war, hab ich geguckt was für charakterisierende Wörter drin waren, und hab die dann in eine Liste mit geblockten Wörtern eingetragen.
              Zuletzt geändert von Hopka; 31.12.2005, 10:37.
              hopka.net!

              Kommentar


              • #8
                Du kannst auch einen Code erzeugen, den in die Session speichern und per Hidden-Input Feld in deinem Gästebuch mitsenden. Wenn die beiden Codes übereinstimmen, dann kommt der Eintrag von der richtigen Seite.
                Das glaubst du!

                Wenn ich lust habe, hole ich mir die SID und auch den Code und schon habe ich alles, was ich brauche um eine gültige Request zu senden.

                Kommentar


                • #9
                  Vielleicht habe ich jetzt einen Gedankenfehler, aber ein Captcha hilft dagegen doch genauso wenig!? Die Grafik kann man sich auch von dem Originalformular auslesen lassen, und dann in der eigenen Datei anzeigen.

                  Ich denke es gibt keine Sicherheit, dass die Daten von einer festgelegten Datei kommen. Aber das kann einem doch auch egal sein, sofern die Daten konform sind. Und dieses wird durch den Mechanismus hinter dem Formular auf dem Server sichergestellt.

                  Egal wieviel Aufwand man treibt, es benötigt nur ein wenig mehr um die Vorkehrungen zu umgehen.

                  mfg

                  Kommentar


                  • #10
                    Ich habe das für meine Zwecke so gelöst:

                    Beim Aufrufen des Gästebuches wird eine UID generiert, in der DB gespeichert und in ein Hidden-Feld gesetzt.

                    Beim Absenden eines Eintrages wird geprüft, ob die UID aus dem Hidden-Feld in der Datenbank vorhanden ist. Ist sie nicht vorhanden, wird der GB-Eintrag auch nicht gespeichert. Ist sie vorhanden, wird der GB-Eintrag gespeichert und die UID aus der Datenbank gelöscht.

                    Wenn man einen Eintrag nun von einer fremden Seite aus machen will, müsste man auf jeden Fall das Gästebuch aufrufen, damit eine UID generiert und in die DB gespeichert wird, die aktuelle UID auslesen und dann den Eintrag absenden. Und das für jeden Spam-Eintrag neu. Und mithilfe der Browser-Aktualisierung kann man auch nicht Spammen, da die UID im Hidden-Feld ja nicht mehr in der DB vorhanden ist.

                    Das sind zwar zwei DB-Querys mehr, aber ein Gästebuch wird ja auch nicht 100 Mal in der Sekunde aufgerufen.

                    pb

                    Kommentar


                    • #11
                      Das hindert mich aber nicht ein Script zu schreiben, dass dein GB auftruft, das Form mit Müll auffüllt und an die DB sendet. Und dann einen neuen Aufruf macht (wegen der neuen UID).

                      Der einzige gangbare Weg um Spam ansatzweise wirksam zu bekämpfen, ist es mit Captchas zu arbeiten.

                      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


                      • #12
                        Original geschrieben von v-sync
                        Vielleicht habe ich jetzt einen Gedankenfehler, aber ein Captcha hilft dagegen doch genauso wenig!? Die Grafik kann man sich auch von dem Originalformular auslesen lassen, und dann in der eigenen Datei anzeigen.
                        dass ein mensch das kann, ist klar. dafür sind captchas ja da: es geht darum, dass es nahezu unmöglich für eine maschine sein soll, den schriftzug zu lesen.

                        Kommentar


                        • #13
                          Original geschrieben von penizillin
                          dass ein mensch das kann, ist klar. dafür sind captchas ja da: es geht darum, dass es nahezu unmöglich für eine maschine sein soll, den schriftzug zu lesen.
                          Da widerspreche ich dir auch nicht. Nur war Spam (oder eine andere Form von automatisierten Vorgängen) nicht unbedingt das Anliegen vom Threadersteller, zumindest hat er das mit keinem Wort erwähnt.

                          Kommentar

                          Lädt...
                          X