Benedikt: Prüfen, ob Formulardaten von eigener Seite stammen?

Hallo liebe SelfHTMLer,

bei der Entwicklung eines eigenen kleines Formularsystems (ist nicht so wichtig) bin ich auf ein grundsätzliche Frage gestoßen: Wie kann ich eigentlich prüfen, ob die an mein Skript mitgeschickten Daten von einer meiner eigenen Seiten kommen?
Also ich meine, theoretisch kann sich ja jeder die Namen meiner Formularelemente anschauen, daraus ein eigenes Formular bauen und dann mein "Verarbeitungsscript" unter action="" angeben?

Wahrscheinlich steh ich gerade auf dem Schlauch, aber das würde mich doch interessieren.

Danke schonmal für die Hilfe,

Benedikt

  1. Hallo Benedikt,

    bei der Entwicklung eines eigenen kleines Formularsystems (ist nicht so wichtig) bin ich auf ein grundsätzliche Frage gestoßen: Wie kann ich eigentlich prüfen, ob die an mein Skript mitgeschickten Daten von einer meiner eigenen Seiten kommen?
    Also ich meine, theoretisch kann sich ja jeder die Namen meiner Formularelemente anschauen, daraus ein eigenes Formular bauen und dann mein "Verarbeitungsscript" unter action="" angeben?

    Nein - das ist AFAIK in keinem Fall möglich.
    Allerdings gibt es Möglichkeiten, um zu überprüfen, dass der Benutzer innerhalb einer Zeitspanne X sowohl die Formularseite als auch die Aktionsseite aufgerufen hat - das ist unter anderem mit Sessions machbar.

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    1. Hallo Marc,

      Also ich meine, theoretisch kann sich ja jeder die Namen meiner Formularelemente anschauen, daraus ein eigenes Formular bauen und dann mein "Verarbeitungsscript" unter action="" angeben?
      Nein - das ist AFAIK in keinem Fall möglich.

      doch, selbstverständlich ist das möglich, und es ist sogar gängige Praxis.
      Oder was meinst du, wie sonst jeder ein funktionstüchtiges Google-Suchformular auf seine Seite setzen könnte? Ich habe mir sogar für den eigenen Gebrauch ein auf meine Präferenzen angepasstes Google-Formular lokal auf meiner Büchse abgelegt, wo schon meine "typischen" Parameter als Defaultwerte drinstehen. Einschließlich "Öffnen der Suchergebnisse in einem neuen Browserfenster".

      Allerdings gibt es Möglichkeiten, um zu überprüfen, dass der Benutzer innerhalb einer Zeitspanne X sowohl die Formularseite als auch die Aktionsseite aufgerufen hat - das ist unter anderem mit Sessions machbar.

      Wird bei Formularen eigentlich auch ein Referer übertragen? Nicht dass das sicher wäre, die "Zuverlässigkeit" des Referers ist mir bekannt - aber der Gedanke ging mir gerade so durch den Kopf.

      Übrigens, Benedikt: Der Request, den dein Script erhält, muss nicht einmal *überhaupt* durch ein HTML-Formular ausgelöst worden sein! Den Request an ein GET-Formular kann man beispielsweise prima als Bookmark speichern, als Link verschicken oder durch direkte Eingabe der GET-URL aufrufen. Bei POST-Formularen geht's nicht ganz so komfortabel, aber jedes Script und jede Anwendung, die POST-Requests erzeugen können, können auch dein Script antriggern. Ob das per AJAX, PHP, Perl, oder durch ein spezielles Programm erfolgt, ist dabei völlig unerheblich.

      Schönes Wochenende noch,
       Martin

      --
      Gültig sind Frauen ab 16, wohlgeformt ab 160 Pfund.
        (Gunnar Bittersmann)
      1. Wird bei Formularen eigentlich auch ein Referer übertragen?

        Ja.

        doch, selbstverständlich ist das möglich,

        Es ist sogar möglich Beiträge zu lesen und im Gesamtzusammenhang zu verstehen. Marc Reichelts nein galt der Frage, ob es möglich ist zu prüfen ob die Daten von der eigenen Seite kommen.

  2. Hello,

    bei der Entwicklung eines eigenen kleines Formularsystems (ist nicht so wichtig) bin ich auf ein grundsätzliche Frage gestoßen: Wie kann ich eigentlich prüfen, ob die an mein Skript mitgeschickten Daten von einer meiner eigenen Seiten kommen?

    Durch ein Zertifikats-System.

    Um ein gültiges zu erhalten, muss man erst ein Dokument von Deinem Server heruterladen.
    Der erste, der es zurücksendet, ist dann der vermeintliche rechtmäßige Verwender des Zertifikats.

    Das funktioniert eigentlich in der Praxis zu 99,x% zufriedenstellend. Die letzten 0,y% sind sowieso nicht zu kontrollieren, weil sie selber Zugriff auf DNS und Routing-Services haben, oder sich sehr viel Mühe geben, Dich zu ärgern...

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  3. he

    Zusätzlich sei noch auf register globals hingewiesen.

    gruß bascombe

  4. Beneditk,

    Also ich meine, theoretisch kann sich ja jeder die Namen meiner Formularelemente anschauen, daraus ein eigenes Formular bauen und dann mein "Verarbeitungsscript" unter action="" angeben?

    Du hast das Problem erkannt, dein Lösungsansatz geht aber in die falsche Richtung. Anstatt zu überprüfen, ob die Daten von deiner Seite kommen, überprüfe einfach, ob es sich um gültige Eingaben handelt.

    Beispiel: Wenn dein Formular eine Auswahl zwischen "A", "B" und "C" bietet und ein Auswertungsscript erhält plötzlich als Wert "D", dann weise diese Eingabe mit einer Fehlermeldung zurück.

    Schöne Grüße,

    Johannes

  5. Moin!

    bei der Entwicklung eines eigenen kleines Formularsystems (ist nicht so wichtig) bin ich auf ein grundsätzliche Frage gestoßen: Wie kann ich eigentlich prüfen, ob die an mein Skript mitgeschickten Daten von einer meiner eigenen Seiten kommen?

    Requests (mit Formulardaten oder ohne) kommen NIE von "deiner Seite", sondern immer von einem Browser irgendwo im Internet.

    Also ich meine, theoretisch kann sich ja jeder die Namen meiner Formularelemente anschauen, daraus ein eigenes Formular bauen und dann mein "Verarbeitungsscript" unter action="" angeben?

    Was wäre daran schlimm? Grundsätzlich doch erstmal gar nichts. Du kriegst einen Request rein - ob der Client dein Formular vorher gesehen hat oder nicht, ist allgemein erstmal egal.

    Die Frage ist nur, was du mit den Daten machst. Aber die Fragestellung sollte dann nicht lauten, ob der Client vorher dein Formular gesehen hat, sondern ob er wünschenswerte oder nicht wünschenswerte Daten schickt.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."