Master736: Pfad ausgabe mit hinterhängenden variablen

Hallo

ich bin dabei ein logsystem für meine page zu bauen
dafür muss ich mir den dateinamen mit den ganzen variablen dahinter ausgeben lassen
also c.a. so
/include.php?path=beg.php

mit $_SERVER['PHP_SELF'] kriege ich ja nur /include.php
ausgegeben

weiß einer wie ich es machen kann das mir die variablen mit ausgegeben werden?

MFG: Master736

  1. Hallo Master736.

    ich bin dabei ein logsystem für meine page zu bauen
    dafür muss ich mir den dateinamen mit den ganzen variablen dahinter ausgeben lassen
    also c.a. so
    /include.php?path=beg.php

    mit $_SERVER['PHP_SELF'] kriege ich ja nur /include.php
    ausgegeben

    weiß einer wie ich es machen kann das mir die variablen mit ausgegeben werden?

    Schaue dir einmal $_SERVER mittels print_r() an und du wirst sehen, dass sich dir zwei Möglichkeiten bieten.

    Einen schönen Sonntag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
    1. Danke Mathias

      genau das hab ich gesucht :-)

  2. Hi!

    Deine eigentlich Frage hat dir Mathias ja bereits beantwortet.
    Ich wollte noch mal auf eine andere Sache eingehen.
    Dein Script sieht für mich verdammt gefährlich aus.
    Ich weiß nicht, ob das wirklich so ist. Eventuell führt du noch Prüfungen aus...

    /include.php?path=beg.php

    Hier übergibst du scheinbar einen Dateinamen an eine "include.php".
    Vom Namen her scheint es mir so, als würde diese include.php die Datei einbinden, deren Dateinamen du übergibst.

    Du verwendest du hoffentlich keinen Code wie diesen:
    include( $_GET['path'] );

    Du darfst nie, nie, niemals Werte, die von außen kommen, ungeprüft in dein Script übernehmen.
    Was wäre in diesem Fall, wenn jemand der URL manipulieren würde?
    Was würde beispielsweise bei einem Aufruf von include.php?path=../../.htpasswd passieren?
    Würde dein Script dann versuchen, diese Datei einzubinden?
    Klar enthält so eine eingebundene Datei vermutlich keinen PHP-Code.
    Aber dann kommt es eventuell zu einer Fehlermeldung, die Teile des Dateiinhaltes preis gibt.
    Eventuell könnte man deinem Script so auch bösartigen, fremden PHP-Code zur Ausführung unterjubeln.
    Wenn du eventuell noch ein Bilder-Upload-Script hast, wo keine Prüfung des MIME-Types durchgeführt wird, dann würde es übel aussehen...
    Es gäbe da eine ganze Reihe an denkbaren Angriffsmöglichkeiten.

    Ich würde daher empfehlen, keinen offensichtlichen Dateinamen per URL zu übergeben und in jedem Fall Prüfungen durchzuführen.
    Setze einen Switch/Case-Block mit default-Wert (falls ein unerwarteter Dateiname übergeben wird) ein.

    Schöner Gruß,
    rob

    1. Hi!

      Deine eigentlich Frage hat dir Mathias ja bereits beantwortet.
      Ich wollte noch mal auf eine andere Sache eingehen.
      Dein Script sieht für mich verdammt gefährlich aus.
      Ich weiß nicht, ob das wirklich so ist. Eventuell führt du noch Prüfungen aus...

      /include.php?path=beg.php
      Hier übergibst du scheinbar einen Dateinamen an eine "include.php".
      Vom Namen her scheint es mir so, als würde diese include.php die Datei einbinden, deren Dateinamen du übergibst.

      Du verwendest du hoffentlich keinen Code wie diesen:
      include( $_GET['path'] );

      Du darfst nie, nie, niemals Werte, die von außen kommen, ungeprüft in dein Script übernehmen.
      Was wäre in diesem Fall, wenn jemand der URL manipulieren würde?
      Was würde beispielsweise bei einem Aufruf von include.php?path=../../.htpasswd passieren?
      Würde dein Script dann versuchen, diese Datei einzubinden?
      Klar enthält so eine eingebundene Datei vermutlich keinen PHP-Code.
      Aber dann kommt es eventuell zu einer Fehlermeldung, die Teile des Dateiinhaltes preis gibt.
      Eventuell könnte man deinem Script so auch bösartigen, fremden PHP-Code zur Ausführung unterjubeln.
      Wenn du eventuell noch ein Bilder-Upload-Script hast, wo keine Prüfung des MIME-Types durchgeführt wird, dann würde es übel aussehen...
      Es gäbe da eine ganze Reihe an denkbaren Angriffsmöglichkeiten.

      Ich würde daher empfehlen, keinen offensichtlichen Dateinamen per URL zu übergeben und in jedem Fall Prüfungen durchzuführen.
      Setze einen Switch/Case-Block mit default-Wert (falls ein unerwarteter Dateiname übergeben wird) ein.

      Schöner Gruß,
      rob

      ne das is schon sicher das man keine externen dateien darüber einbinden kann  ich lass sowas natürlich nicht unsicher ;-)

      1. Hi!

        ne das is schon sicher das man keine externen dateien darüber einbinden kann  ich lass sowas natürlich nicht unsicher ;-)

        Ich meine keine externen Dateien. Ich meine Dateien, die sich ebenfalls auf deinem Server befinden.
        Was würde passieren, wenn jemand per URL einen anderen Dateinamen übergibt, als von dir erwartet? Fängst du das ab?

        Schöner Gruß,
        rob

        1. Hi!

          ne das is schon sicher das man keine externen dateien darüber einbinden kann  ich lass sowas natürlich nicht unsicher ;-)
          Ich meine keine externen Dateien. Ich meine Dateien, die sich ebenfalls auf deinem Server befinden.
          Was würde passieren, wenn jemand per URL einen anderen Dateinamen übergibt, als von dir erwartet? Fängst du das ab?

          Schöner Gruß,
          rob

          ja klar da geht nur das was ich will
          hab da grad auch extra nochmal ein bischen dran ausprobiert  aber da kommt nix anderes durch

          MFG: Master736