Pfad ausgabe mit hinterhängenden variablen
Master736
- php
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
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.phpmit $_SERVER['PHP_SELF'] kriege ich ja nur /include.php
ausgegebenweiß 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
Danke Mathias
genau das hab ich gesucht :-)
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
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 ;-)
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
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