Jan: Include z.b www.domain.de/index.php?include=news.php

Hi,

mein Problem ist das ich ein Php anfänger bin und ich nicht weiß wie ich volgendes bewerstelliege:

ich möchte das meine index.php an einer stelle eine seite per include einfügt:

include $zielseite;

vobei zielsitet die seite sein soll die oben in der url steht:
www.domain.de/index.php?include=news.php

in diesem falle news.php .

habt ihr dafür ein tutorial?

mfg jan

  1. Hallo,

    vobei zielsitet die seite sein soll die oben in der url steht:
    www.domain.de/index.php?include=news.php
    in diesem falle news.php .

    meinst du etwa
    [code=php]include $_GET["include"];[/code]
    vielleicht kannst du uns noch mehr zu deinem Anwendungsfall schildern, denn ich finde diese "Lösung" äußerst bedenklich und ich denke es lässt sich anders lösen.

    Gruß,
    Benne

    1. Ja danke das war...
      toll ich hatte schon die lösung und dachte das wäre doch das falsche!

      1. Hallo Freunde des gehobenen Forumsgenusses,

        Ja danke das war...

        Nein, das war es nicht. Lade auf gar keinen Fall ein PHP-Script auf deinen Server,
        das eine solche Sicherheitslücke enthält!

        Verwende bitte ein vernünfiges Konstrukt:

          
        <?php  
        $erlaubte_seiten = array('news.php', 'index.php', [etc...]);  
          
        include(  
         in_array ($erlaubte_seiten, $_GET['include']) ? $_GET['include'] : 'default.php'  
        );  
          
        ?>  
        
        

        Andere Forumsteilnehmer mögen meinen Code auf Sicherheitslücken untersuchen,
        es ist  möglich, dass ich eine solche eingebaut habe.

        Gruß
        Alexander Brock

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi Alexander,

          in_array ($erlaubte_seiten, $_GET['include']) ? $_GET['include'] : 'default.php'

          
          >   
          > Andere Forumsteilnehmer mögen meinen Code auf Sicherheitslücken untersuchen,  
          > es ist  möglich, dass ich eine solche eingebaut habe.  
            
          Ganz kleiner Fehler: Die Parameter für [in_array()](http://de2.php.net/in_array) müssen grade anders herrum angegeben werden - ich habe es auch vorhin nachgucken müssen ;-)  
            
            bool in\_array ( mixed needle, array haystack [, bool strict] )  
            
            
          MfG, Dennis.
          
          -- 
          Mein SelfCode: [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)  
            
          "Funktioniert nicht" hat exakt den selben Aussagewert wie "husseldiguggeldu" ([Cheatah](http://forum.de.selfhtml.org/?t=109923&m=688062))
          
        2. Hallo Alexander,

          in_array ($erlaubte_seiten, $_GET['include']) ? $_GET['include'] : 'default.php'

          andersrum:
          in_array($_GET['include'], $erlaubte_seiten) ? $_GET['include'] : 'default.php'

          in_array() sucht im zweiten Parameter nach dem ersten, nicht andersrum.

          Grüße aus Nürnberg
          Tobias

        3. Hallo Alexander

          Ja danke das war...

          Nein, das war es nicht. Lade auf gar keinen Fall ein PHP-Script auf deinen Server,
          das eine solche Sicherheitslücke enthält!

          1. ist deine Lösung falsch
          2. habe ich bereits erwähnt, dass ich die Lösung für ausgesprochen schlecht halte.
          Meiner Meinung nach sollte man das ganz anders angehen. Um Jan helfen zu können sollte er doch bitte seine eigentliche Problemstellung schildern.

          Gruß,
          Benne

          1. Hallo Freunde des gehobenen Forumsgenusses,

            1. ist deine Lösung falsch

            Na und? Ich habe extra geschrieben, dass ich auch ein Mensch bin und mal die Reihenfolge
            irgendwelcher Parameter verwechseln kann. Außerdem enthält meine Lösung trotzdem vermutlich
            keine Sicherheitslücke, echo (string)array() ergibt nämlich "Array".

            Gruß
            Alexander Brock

            --
            SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
            http://againsttcpa.com
    2. Hi Benne,

      vobei zielsitet die seite sein soll die oben in der url steht:
      www.domain.de/index.php?include=news.php
      in diesem falle news.php .

      meinst du etwa
      include $_GET["include"];

      Das sollte man AUF GAR KEINEN FALL machen!!

      Denn damit hast du eine ziemlich große Sicherheitslücke produziert.
      Über diese Sicherheitslücke lässt sich
      a) alle Dateien ausgeben, auf die auch du Zugriff hast, es besteht
         für den Angreifer also die Möglichkeit an sensible Dateien
         (z.B. Passwort Dateien) dran zu kommen
      b) sofern allow_url_fopen auf on steht, lässt sich sogar _beliebiger_
         PHP Code auf dem Server ausführen - ich will gar nicht erst
         sagen, wozu dass alles mißbraucht werden könnte. Die Liste fängt
         beim Versenden von Spam Mails an und hört beim Ausführen von
         weiteren Hacking Angriffen auf andere Server von deiner IP aus
         auf.

      Aus diesem Grund: So etwas bloß nicht machen!

      So ist es besser:

      $pages = array("index",  
                     "news",  
                     "foobar",  
                     "impressum");  
      if([link:http://de2.php.net/in_array@title=in_array]($_GET['page'], $pages))  
      {  
        include "path/to/the/pages/" . $_GET['pages'] . ".php";  
      }  
      else  
      {  
        include "path/to/the/pages/index.php";  
      }
      

      Was hier nun anders ist:

      • Es können nur Seiten included werden, die im Array $pages enthalten sind
      • Es können nur Seiten mit der Endung .php included werden
      • der paht/to/the/pages/ vorne dran macht ein Einbinden von Scripten
          über http:// unmöglich

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
      Man kann die Menschen zur Vernunft bringen, indem man sie dazu verleitet, daß sie selbst denken. (Voltaire)
      1. Hallo Dennis,

        Das sollte man AUF GAR KEINEN FALL machen!!

        habe ich bereits erwähnt.

        Gruß,
        Benne

        1. Hi Benne,

          Das sollte man AUF GAR KEINEN FALL machen!!
          habe ich bereits erwähnt.

          "äußerst bedenklich" ist etwas anderes als "auf gar keinen Fall machen" - du solltest so einen PHP Code gar nicht erst jemandem vorschlagen, bedenke, dass auch später im Archiv lesende das zu Gesicht bekommen können ohne vielleicht noch weiter zu lesen.

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
          "Funktioniert nicht" hat exakt den selben Aussagewert wie "husseldiguggeldu" (Cheatah)
      2. Hi,

        Über diese Sicherheitslücke lässt sich

        ...

        c) auch lustig: index.php?include=index.php

        E7

        1. Hi e7,

          Über diese Sicherheitslücke lässt sich
          ...

          c) auch lustig: index.php?include=index.php

          Stimmt - ob man damit wohl einen Server in die Knie kriegt, wenn dieser schlecht konfiguriert ist (max_execution_time zu hoch) und man das oft genug gleichzeitig macht?

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
          Der beste Datenschutz ist das nicht-speichern von Daten. (Christian Kruse)