Karoline: <form action=""> vs. <form action="$_SERVER['PHP_SELF']">

Hallo, hab jetzt ziemlich viel rum geschaut aber die Antworten sind alle mehrere Jahre alt und gerade bei PHP und auch bei HTML hat sich in den letzten Jahren ja einiges getan. Daher wollte ich nochmal nachfragen was aktuell Stand der Dinge ist und wie man es richtig macht (s.u.).

Also habe eine Seite

www.meinewebseite/test/test.php?id=5

auf dieser Seite ist unter anderem ein Formular, die Einträge werden bei submit in eine DB geschrieben, der db_input ist im head der Seite eingebunden - möchte also bei submit auf die gleiche Seite verweisen (und natürlich die $GET Variable ?id=5 mit übergeben).

Habe nun gelesen, dass es am sichersten und einfachsten ist das über <form action="" method="POST"> zu machen.

alternativ wäre ja: <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>"> - wobei man da noch die $GET variable einbauen müsste (oder hat sich das mittlerweile geändert?).

Ist das wirklich valide wenn ich das action Attribut leer lasse - oder funktioniert das zwar, ist aber eigentilch nicht zulässig?

Oder gibt es mittlerweile eine andere Methode das gleiche Ergebnis zu erzielen ohne das Script zusätzlich angreifbar zu machen?

Danke und Grüße Karoline

  1. Hallo Karoline,

    Wenn das action-Attribut leer ist oder fehlt, werden die Formulardaten an die aktuelle Seite gesendet.

    Bis demnächst
    Matthias

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    1. Hallo Matthias,

      ich brauche ein wenig Hilfe beim Lesen der Spezifikation :-)

      Wenn das action-Attribut leer ist oder fehlt, werden die Formulardaten an die aktuelle Seite gesendet.

      Dass der Wert des action-Attributs nicht leer sein darf, wissen wir ja jetzt, steht ja auch so in der Spezifikation. Aber wo steht denn, dass der Default-Wert die URL des aktuellen Dokuments ist? Der Validator meckert nicht, dann wird es wahrscheinlich korrekt sein.

      Bei den Werten des method-Attribut ist Sie da klarer formuliert, wie ich finde (oder ich habe die klarer formulierte Stelle nicht gefunden...):

      The method and formmethod content attributes are enumerated attributes with the following keywords and states:

      • The keyword get, mapping to the state GET, indicating the HTTP GET method.
      • The keyword post, mapping to the state POST, indicating the HTTP POST method. The invalid value default for these attributes is the GET state. The missing value default for the method attribute is also the GET state. (There is no missing value default for the formmethod attribute.)

      Ich habe den Wiki-Artikel angepasst und einen expliziten Hinweis auf das mögliche Weglassen aller Attribute geschrieben (ist redundant, aber m. M. n. wichtig).

      Gruß
      Julius

      1. Hallo Julius,

        ich brauche ein wenig Hilfe beim Lesen der Spezifikation :-)

        Aber wo steht denn, dass der Default-Wert die URL des aktuellen Dokuments ist?

        form submission algorithm Punkt 8

        If action is the empty string, let action be the document's address of the form document.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        1. Hallo Matthias,

          Aber wo steht denn, dass der Default-Wert die URL des aktuellen Dokuments ist?

          form submission algorithm Punkt 8

          If action is the empty string, let action be the document's address of the form document.

          vielen Dank fürs Heraussuchen!

          Gruß
          Julius

          1. Hallo Julius,

            If action is the empty string, let action be the document's address of the form document.

            vielen Dank fürs Heraussuchen!

            Interessant an dieser Stelle:

            The action of an element is the value of the element's formaction attribute, if the element is a submit button and has such an attribute, or the value of its form owner's action attribute, if it has one, or else the empty string.

            Aber action="" ist nicht erlaubt.

            Bis demnächst
            Matthias

            --
            Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
            1. Hello,

              If action is the empty string, let action be the document's address of the form document.

              Interessant an dieser Stelle:

              The action of an element is the value of the element's formaction attribute, if the element is a submit button and has such an attribute, or the value of its form owner's action attribute, if it has one, or else the empty string.

              Aber action="" ist nicht erlaubt.

              in der IDL aber schon.

              Liebe Grüße
              Tom S.

              --
              Die Krawatte ist das Kopftuch des Westens
              1. Hallo TS,

                in der IDL aber schon.

                Falls du Interactive Data Language meinst, ist das für HTML in wie fern relevant?

                Bis demnächst
                Matthias

                --
                Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
                1. Hello,

                  in der IDL aber schon.

                  Falls du Interactive Data Language meinst, ist das für HTML in wie fern relevant?

                  Ach. SO heißt das? Ich hatte das mit Interface Definition Language übersetzt und es auf die Schicht unter dem HTML bezogen.

                  Liebe Grüße
                  Tom S.

                  --
                  Die Krawatte ist das Kopftuch des Westens
                  1. Aloha ;)

                    Falls du Interactive Data Language meinst, ist das für HTML in wie fern relevant?

                    Ach. SO heißt das? Ich hatte das mit Interface Definition Language übersetzt und es auf die Schicht unter dem HTML bezogen.

                    Es gibt eine Schicht unter dem HTML, die sich für action= interessiert⁉️

                    Grüße,

                    RIDER

                    --
                    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
                    # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
                    1. Hello,

                      Ach. SO heißt das? Ich hatte das mit Interface Definition Language übersetzt und es auf die Schicht unter dem HTML bezogen.

                      Es gibt eine Schicht unter dem HTML, die sich für action= interessiert⁉️

                      Gibt es keine Schicht mehr darunter? Interface Definitonen

                      Liebe Grüße
                      Tom S.

                      --
                      Die Krawatte ist das Kopftuch des Westens
                      1. Aloha ;)

                        Ach. SO heißt das? Ich hatte das mit Interface Definition Language übersetzt und es auf die Schicht unter dem HTML bezogen.

                        Es gibt eine Schicht unter dem HTML, die sich für action= interessiert⁉️

                        Gibt es keine Schicht mehr darunter? Interface Definitonen

                        Naja, Schicht darunter würde ich das nicht nennen wollen.

                        Was ich dazu gefunden habe sagt aus, dass es sich dabei nur um eine innerhalb der HTML-Spezifikation definierte Schnittstelle geht, die im Browser angesprochen werden kann - zum Beispiel mit JavaScript, wo die Web IDL den Grundstock des DOM ausmacht.[1]

                        „In JavaScript texts the IDL attributes are often referred to as properties because they are exposed as properties of DOM objects to JavaScript.“

                        IDL ist demnach eine Browserschnittstelle, die (zumindest initial) mit HTML-Daten gefüttert wird, aber eher keine Grundlage von HTML, also auch keine Schicht darunter. Eher noch ein Bestandteil von HTML bzw. ein Nebenprodukt der HTML-Spec.

                        Grüße,

                        RIDER

                        --
                        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
                        # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[

                        1. Als solches ist dann auch klar, warum action="" für die IDL erlaubt ist (denn bei nicht-gesetztem action-Attribut ist eben bspw. das DOM-(also IDL)-Attribut eben mit "" belegt), das ist aber dann in dem Fall für das Attribut in HTML völlig irrelevant. ↩︎

                        1. Hello,

                          Gibt es keine Schicht mehr darunter? Interface Definitonen

                          Naja, Schicht darunter würde ich das nicht nennen wollen.

                          Worauf ich hinaus wollte war nur, dass an unterschiedlichen Stellen unterschiedliche Vorgaben gemacht wetden, obwohl sie sich über die Schichtgrenzen aka Interfaces hinweg gegenseitig beeinflussen. So verstehe ich das jedenfalls bezogen auf das action-Attribut, das man ja auch nach dem Laden des Dokumentes noch mittels JS setzen kann. Und dann ist ein Leerstring erlaubt.

                          Liebe Grüße
                          Tom S.

                          --
                          Die Krawatte ist das Kopftuch des Westens
                          1. Aloha ;)

                            Worauf ich hinaus wollte war nur, dass an unterschiedlichen Stellen unterschiedliche Vorgaben gemacht wetden, obwohl sie sich über die Schichtgrenzen aka Interfaces hinweg gegenseitig beeinflussen.

                            Soweit richtig.

                            So verstehe ich das jedenfalls bezogen auf das action-Attribut, das man ja auch nach dem Laden des Dokumentes noch mittels JS setzen kann. Und dann ist ein Leerstring erlaubt.

                            Du setzt per JS immer nur das IDL-Attribut (in Form des DOM-Attributs) und weil für das IDL-Attribut ein Leerstring erlaubt ist, ist für das „setzen mittels JS“ ein Leerstring erlaubt. Es wäre auch aus JS-Sicht her ziemlich unintuitiv, wenn man hier den Leerstring nicht setzen dürfte.

                            Für das HTML-Attribut (das du ja nie mit JS setzt, sondern das vielmehr seinerseits beim Laden des Dokuments die Grundlage für das Setzen des IDL-Attribut bzw. des DOM-Attribut darstellt) ist ein Leerstring nie erlaubt. Es ist ja sogar so, dass auch ein Fehlen des HTML-Attributs ein Setzen des DOM-Attributs nach sich zieht (mit "").

                            Insbesondere findet aber keine gegenseitige Beeinflussung statt!

                            Grüße,

                            RIDER

                            --
                            Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
                            # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
                            1. Hello,

                              Für das HTML-Attribut (das du ja nie mit JS setzt, sondern das vielmehr seinerseits beim Laden des Dokuments das IDL-Attribut bzw. das DOM-Attribut setzt) ist ein Leerstring nie erlaubt.

                              Und das finde ich eben nicht logisch.

                              Liebe Grüße
                              Tom S.

                              --
                              Die Krawatte ist das Kopftuch des Westens
                              1. Aloha ;)

                                Für das HTML-Attribut (das du ja nie mit JS setzt, sondern das vielmehr seinerseits beim Laden des Dokuments das IDL-Attribut bzw. das DOM-Attribut setzt) ist ein Leerstring nie erlaubt.

                                Und das finde ich eben nicht logisch.

                                (Beachte noch meine Editierung, ich hab (offensichtlich nachdem du auf Antworten gedrückt hast) noch an der Formulierung gefeilt.)

                                Das ist dann logisch, wenn man sich klarmacht, dass das IDL-Attribut und das HTML-Attribut zwar gleich heißen (und das HTML-Attribut das Setzen des IDL-Attributs beeinflusst), dass sie aber ansonsten aus vollkommen unterschiedlichen Welten stammen. Das HTML-Attribut ist integraler Bestandteil der Spezifikation für HTML und die dafür geltenden Beschränkungen richten sich nach den Bedürfnissen von HTML, einer Auszeichnungssprache. Ein Leerstring als Attributswert hat keine Aussage und lässt sogar intuitiv falsche Schlüsse („das wird nirgendwohin gesendet“) zu. Deshalb möchte man das vermeiden und setzt auf HTML-Ebene fest, dass ein action-Attribut immer sagen soll, wohin das Skript gesendet wird - und wenn man es nirgendwo anders hinsenden will muss man das dann gar nicht angeben. Diese Sichtweise ergibt Sinn.

                                Das IDL-Attribut auf der anderen Seite ist beispielsweise in JS im DOM eingebettet - und in JavaScript ist der Default-Wert für nicht gesetzte DOM-Eigenschaften eben "".[1]

                                Grüße,

                                RIDER

                                --
                                Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
                                # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[

                                1. Spontan würde ich da auch eher auf undefined setzen, wenn es diesen Wert schon gibt, aber es mag Gründe geben, warum das nicht getan wird - immerhin ist das ja im gesamten DOM nicht der Fall. Möglicherweise hängt das damit zusammen, dass DOM nicht die einzige Anwendung von IDL ist (schätzungsweise) und der Leerstring an anderer Stelle das beste zur Verfügung stehende Ausdrucksmittel ist. ↩︎

                                1. Aloha ;)

                                  Das IDL-Attribut auf der anderen Seite ist beispielsweise in JS im DOM eingebettet - und in JavaScript ist der Default-Wert für nicht gesetzte DOM-Eigenschaften eben "".[^1]

                                  [^1]: Spontan würde ich da auch eher auf undefined setzen, wenn es diesen Wert schon gibt, aber es mag Gründe geben, warum das nicht getan wird - immerhin ist das ja im gesamten DOM nicht der Fall. Möglicherweise hängt das damit zusammen, dass DOM nicht die einzige Anwendung von IDL ist (schätzungsweise) und der Leerstring an anderer Stelle das beste zur Verfügung stehende Ausdrucksmittel ist.

                                  Antwort gefunden - die WebIDL ist offensichtlich typisiert, d.h. die Attribute haben einen genau definierten Typ (DOMString) und dementsprechend steht für ein Fehlen eben nur der Leerstring zur Verfügung.

                                  Grüße,

                                  RIDER

                                  --
                                  Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
                                  # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
                                2. Hi,

                                  Ein Leerstring als Attributswert hat keine Aussage und lässt sogar intuitiv falsche Schlüsse („das wird nirgendwohin gesendet“) zu.

                                  Diese Schlußfolgerung ist aber noch wahrscheinlicher, wenn gar kein action-Attribut vorhanden ist.

                                  An anderen Stellen wird ja ein (zwar laut g17n [oder war's g42n], aber nicht laut HTML verbotener) Link auf dieselbe Seite darf ja mit <a href="">diese Seite</a> geschrieben werden. Oder ist das in HTML5 auch nicht mehr erlaubt?

                                  und setzt auf HTML-Ebene fest, dass ein action-Attribut immer sagen soll, wohin das Skript gesendet wird - und wenn man es nirgendwo anders hinsenden will muss man das dann gar nicht angeben.

                                  Daß man das Attribut mit Leerstring nicht angeben muß, wäre es ja ok, aber daß man es explizit nicht angeben darf, ergibt aus meiner Sicht keinen Sinn.

                                  cu,
                                  Andreas a/k/a MudGuard

                                  1. Hallo Andreas,

                                    An anderen Stellen wird ja ein (zwar laut g17n [oder war's g42n], aber nicht laut HTML verbotener) Link auf dieselbe Seite darf ja mit <a href="">diese Seite</a> geschrieben werden. Oder ist das in HTML5 auch nicht mehr erlaubt?

                                    Du beziehst dich wohl auf Gunnar.

                                    Wenn ich folgendes HTML in den Validator packe, hat der nichts zu meckern:

                                    <!DOCTYPE html>
                                    <html>
                                      <head>
                                        <title>Test</title>
                                      </head>
                                      <body>
                                        <a href="">diese Seite</a>
                                      </body>
                                    </html>
                                    

                                    und setzt auf HTML-Ebene fest, dass ein action-Attribut immer sagen soll, wohin das Skript gesendet wird - und wenn man es nirgendwo anders hinsenden will muss man das dann gar nicht angeben.

                                    Daß man das Attribut mit Leerstring nicht angeben muß, wäre es ja ok, aber daß man es explizit nicht angeben darf, ergibt aus meiner Sicht keinen Sinn.

                                    Siehe auch diese Antwort.

                                    Gruß
                                    Julius

                                    --
                                    „Unterschätze niemals die Datenübertragungsrate eines mit Bändern vollgeladenen Kombis, der über die Autobahn rast.“
                                    Andrew S. Tanenbaum (Quelle)
              2. Hallo TS,

                The action of an element is the value of the element's formaction attribute, if the element is a submit button and has such an attribute, or the value of its form owner's action attribute, if it has one, or else the empty string.

                Aber action="" ist nicht erlaubt.

                in der IDL aber schon.

                Das ist dann im Prinzip eine Wiederholung dessen, was ich schrieb:

                The action of an element kann auch der leere String sein.

                Bis demnächst
                Matthias

                --
                Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
                1. Hello,

                  The action of an element is the value of the element's formaction attribute, if the element is a submit button and has such an attribute, or the value of its form owner's action attribute, if it has one, or else the empty string.

                  Aber action="" ist nicht erlaubt.

                  in der IDL aber schon.

                  Das ist dann im Prinzip eine Wiederholung dessen, was ich schrieb:

                  The action of an element kann auch der leere String sein.

                  Da bin ich jetzt aber arg verunsichert. Dein Text kam doch aus den Behandlungsanweisungen und nicht aus den Vorgaben? Oder bringe ich das jetzt mit einem anderen Posting durcheinander?

                  Aber lass gut sein! Solange die Browser unisono einen Leerstring für das action-Attribut des Form-Elementes gleichartig interpretieren, mag ich nicht mehr über die Gültigskeitsräume der Vorgaben nachdenken :-O

                  Liebe Grüße
                  Tom S.

                  --
                  Zwischen Gott und den Menschen stören nur die Religionen
                  1. Hallo TS,

                    Solange die Browser unisono einen Leerstring für das action-Attribut des Form-Elementes gleichartig interpretieren, mag ich nicht mehr über die Gültigskeitsräume der Vorgaben nachdenken :-O

                    Falls du HTML meinst: Nur ein weggelassenes action-Attribut ist valide, ein leeres hingegen nicht. Ob die Browser das im Moment nicht juckt, ist eine andere Geschichte.

                    Gruß
                    Julius

                    1. Hi,

                      Falls du HTML meinst: Nur ein weggelassenes action-Attribut ist valide, ein leeres hingegen nicht.

                      Wer hat sich sowas ausgedacht? Warum darf der Default-Wert nicht auch explizit angegeben werden?

                      cu,
                      Andreas a/k/a MudGuard

                      1. Hallo Andreas,

                        Falls du HTML meinst: Nur ein weggelassenes action-Attribut ist valide, ein leeres hingegen nicht.

                        Wer hat sich sowas ausgedacht? Warum darf der Default-Wert nicht auch explizit angegeben werden?

                        Das weiß ich auch nicht, aber es scheint so, als ob der Unterschied eher akademischer Natur ist – Browser scheinen ja dennoch leere Attribute so zu interpretieren als wären sie nicht vorhanden. Nur valide ist es dann halt nicht.

                        Anders herum: Warum sollte ich den Default-Wert explizit angeben wollen? <input name="vname"> ist ja auch platzsparender gegenüber <input type="text" name="vname"> – wenn das jemand weiß, schreibt er nicht mehr den Default-Wert hinein – und <form action="form.php" action=""> macht keinen Sinn, ich kann ja einfach das action-Attribut löschen. Allerdings ist auch <input type=""> nicht erlaubt, aber auf die Idee, das zu benutzen, kommt man wohl nicht so schnell wie beim action-Attribut...

                        Muss man einfach wissen – mich hat die Fehler-Meldung „Error: Bad value for attribute action on element form: Must be non-empty.“ des Validators immer verwirrt und ich habe dann ein # eingefügt, weil ich nicht gerafft habe, dass der Wert zwar „non-empty“ sein muss, aber dass man das Attribut einfach weglassen darf, war mir nicht klar. Ich habe mal eine bessere Fehlermeldung vorgeschlagen, die erwähnt, dass man das Attribut weglassen kann, um den Default-Wert zu bekommen.

                        Gruß
                        Julius

                        --
                        „Unterschätze niemals die Datenübertragungsrate eines mit Bändern vollgeladenen Kombis, der über die Autobahn rast.“
                        Andrew S. Tanenbaum (Quelle)
                        1. Hi,

                          Anders herum: Warum sollte ich den Default-Wert explizit angeben wollen?

                          z.B. weil die Url dynamisch ermittelt wird, und um dann die Fallunterscheidung "ist leer"/"ist nicht leer" nicht machen zu müssen.

                          cu,
                          Andreas a/k/a MudGuard

  2. Hello Karoline,

    Also habe eine Seite

    www.meinewebseite/test/test.php?id=5

    auf dieser Seite ist unter anderem ein Formular, die Einträge werden bei submit in eine DB geschrieben, der db_input ist im head der Seite eingebunden - möchte also bei submit auf die gleiche Seite verweisen (und natürlich die $GET Variable ?id=5 mit übergeben).

    Habe nun gelesen, dass es am sichersten und einfachsten ist das über <form action="" method="POST"> zu machen.

    alternativ wäre ja: <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>"> - wobei man da noch die $GET variable einbauen müsste (oder hat sich das mittlerweile geändert?).

    Ist das wirklich valide wenn ich das action Attribut leer lasse - oder funktioniert das zwar, ist aber eigentilch nicht zulässig?

    echo '<form action=" ' . $_SERVER['PHP_SELF'] . "'>;
    

    ist nicht sicher gegen XXS-Angriffe. Du solltest den Wert $_SERVER['PHP_SELF'] entweder kontextbehandeln (htmlspecialchars()), oder aber stattdessen $_SERVER['SCRIPT_NAME'] verwenden. Dann gehen aber die Parameter verloren.

    echo '<form action="" method="post"'>; 
    

    lässt die URi vom Aufruf wieder zu, d. h., der Browser setzt diese ein.

    Bliebe als dritte Möglichkeit noch

    echo '<form action="#"' method="post">'; 
    

    Das wird die URL vom Request wieder übernommen. Aber man kann keine zusätzlichen GET-Parameter mehr anhängen.

    So, nun hoffe ich, dass ich es nicht selber durcheinander gebracht habe. Experimentiere lieber selber noch einmal damit. ;-)

    Liebe Grüße
    Tom S.

    --
    Die Krawatte ist das Kopftuch des Westens
    1. Hallo TS,

      alternativ wäre ja: <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>"> - wobei man da noch die $GET variable einbauen müsste (oder hat sich das mittlerweile geändert?).

      echo '<form action=" ' . $_SERVER['PHP_SELF'] . "'>;
      

      Du solltest den Wert $_SERVER['PHP_SELF'] entweder kontextbehandeln (htmlspecialchars())

      wollte sie tun 😉

      echo '<form action="" method="post"'>; 
      

      gleichbedeutend mit <form method="post">

      Bis demnächst
      Matthias

      --
      Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    2. Hallo TS,

      ist nicht sicher gegen XXS-Angriffe. Du solltest den Wert $_SERVER['PHP_SELF'] entweder kontextbehandeln (htmlspecialchars()), oder aber stattdessen $_SERVER['SCRIPT_NAME'] verwenden.

      Auch hier muss htmlspecialchars zum Einsatz kommen, da die Ausgabe HTML ist. Kontextwechselbehandlung macht man nicht nur, um XSS-Angriffen vorzubeugen, sondern weil es nötig ist und es sonst zu komischen Resultaten führen kann. Wenn im folgenden Beispiel das Script " onmouseover="alert('hack3d!').php[1] heißt, dann knallt es:

      <!doctype html>
      <form action="<?=$_SERVER['SCRIPT_NAME']?>"><input></form>
      

      wir erhalten als Ergebnis:

      <!doctype html>
      <form action="/Schreibtisch/" onmouseover="alert('hack3d!').php"><input></form>
      

      Nachtrag: Ich glaube, dass Matthias diese Problematik bereits im vorherigen Beitrag anschnitt, ich habe es noch mal ausführlicher erläutert.

      Gruß
      Julius



      1. Ja, ich weiß: Niemand benennt seine Scripte so, aber hier geht es ums Prinzip. ↩︎

  3. Das action="" Attribute darf nicht leer sein. Aber Du darfst es getrost ganz weglassen 😉