Hallo Christian,
REDIRECT_STATUS löst das Problem in meinem Fall leider
nicht - ich habe sowohl bei einem legalen als auch
bei einem illegalen Zugriff denselben Inhalt in dieser
Environment-Variablen vorgefunden (so daß ich mich nun
wundere, was PHP an dieser Stelle genau macht ...).
O jemine. Vielleicht haben wir soeben die große PHP-
Sicherheitslücke Nr 3 gefunden (2 gabs ja schon:
File-Uploads und POST-Verarbeitung) Wie genau hast Du
diesen Fall hinbekommen? - ich will mal einen Testcase
für PHP machen.
Ich habe mir ein Verzeichnis /handler angelegt, und darin
eine Datei ".htaccess" mit dem Inhalt
Action text/html /cgi-bin/env.pl
sowie eine Datei "index.html" mit einem irrelevanten Inhalt.
env.pl gibt alle Variablen des Environments aus.
Dann habe ich zwei Zugriffe gemacht
a) GET /handler/index.html
b) GET /cgi-bin/env.pl/handler/index.html
Zugriff a) ist der normale implizite Aufruf des Handlers, so
wie man das bei PHP auch tun würde; Zugriff b) ist der Versuch,
mit dem Handler eine beliebige Datei anzusehen in der Hoffnung,
daß dieser mehr darf, als die Apache-HTTP-Kontrollen zulassen
würden.
Bei beiden Zugriffen bekam ich
REDIRECT_STATUS=200.
Allerdings produziert der Handler-Zugriff zusätzlich noch
REDIRECT_REDIRECT_STATUS=200
REDIRECT_REDIRECT_REDIRECT_STATUS=200
, also zwei zusätzliche redirections - vielleicht verläßt
sich PHP ja auf etwas in dieser Richtung ...
Es spielt dabei übrigens keine Rolle, ob der DirectoryDefault
explizit (vom Anwender) oder implizit (von Apache) umgesetzt
wird - das Ergebnis in PATH_TRANSLATED ist dasselbe.
Viele Grüße
Michael