master736: Pfad ausgabe mit hinterhängenden variablen

Beitrag lesen

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 ;-)