XaraX: phpinfo(): Environment-Variablen anzeigen/verstecken?

Beitrag lesen

Salvete!

Wie meinen?
egal: Moin!

Nach Aufruf von phpinfo() bei einem Provider, wo ich gerade mit einer Site hinziehen wollte, mußte ich erschreckt feststellen, was ich dort für Infos erhalte.
Nicht nur, daß auf der SuSE-Kiste dort X installiert ist, nein auch KDE und Gnome laufen drauf... Scheinbar auch 'ne komplette TeX-Distribution.
Ich weiß nicht, was das auf einem Webserver zu suchen hat... Aber da dort ohnehin absolut alles unter root läuft, muß ich mir deswegen wohl auch keine Sorgen mehr machen ;o)
Vielleicht sollte ich da besser mal anrufen und das ansprechen, bevor ich Files auf den Server lade... :o)

Nun denn, wie auch immer...

Dabei würde ich es nicht belassen, sondern mich doch eines Fuchttriebes bedienen, der mich schnellstmöglich vom Provider entfernt...

Unter dem Punkt "Environment" der phpinfo()-Ausgabe erhalte ich eine verdammt lange Liste und frage mich, wo die überhaupt herkommt.
Mit welcher Konfigurationseinstellung kann ich darauf Einfluß nehmen?

Was Scripte angeht, hast Du die Möglichkeit über variables_order die Variable $_ENV/$_SERVER beim Abarbeiten eines Scriptes erst gar nicht befüllen zu lassen. Das nimmt aber keinerlei Einfluß auf die Ausgabe von phpinfo().

Wie kommt es, daß ich hier bei meinem Provider so viele Infos bekomme? Kann man irgendwie festlegen, welche Werte dort gezeigt werden dürfen? Wenn ja, wie?

Der Provider administriert über eine grafische Oberfläche. Diese benötigt zum funktionieren generell mehr Umgebungsvariablen. Das Traurige ist dabei, daß die Fülle an Variablen leider auch die Geschwindigeit der Scripte mindert. In einfachen Schleifen (durchlaufen eines Datenfeldes) sind dies auf einer SuSe mit Standard-ENV ca. 20% Geschwindigkeitsverlust.

Einige Werte, die Du in PHP siehst und nicht vom Server selbst herrühren, werden von der Shell über den Server an PHP "durchgereicht". Eine Beschränkung nach -erlaubt- -nicht erlaubt- ist dabei irrelevant. Die Frage ist eher: Werden sie von PHP benötigt. (Ein mögliches Beispiel hierfür wäre das Aufrufen von Programmen aus PHP heraus.) Für den grafischen Schnickschnack und DIR_COLORS wird man dies wohl eher verneinen können.

Ist es möglich, die Ausgabe von phpinfo() zu faken? Kann man falsche Werte anzeigen lassen? Kann man Werte aus der Anzeige entfernen?

Ja.
Erstes verlangt Eingriff in den Quellcode des Interpreters.
Zweites setzt PHP als Modul voraus. Dann lassen sich Werte mittels apache_setenv() setzen.
Drittes beträfe nur die ENV-Variablen der Shell. Diese können per Serveraufruf über env -i ./apachectl -k start komplett abgestellt werden.

Könnte man z.B. als SERVER_SOFTWARE anzeigen lassen, daß dort ein IIS werkelt, obwohl es sich um einen Apachen handelt?

Siehe apache_setenv(). Sinn macht Dies nicht, da ich bspw. auf unbekannten Systemen mir immer die HTTP-Response-Header auslese. Diese kannst Du, was den Header "Server: ~" angeht, durch PHP nicht verfälschen.

Ich glaube zwar nicht an "Security by Obscurity", aber es würde mich halt mal interessieren, ob diese Möglichkeit besteht...
Bietet PHP irgendwelche Möglichkeiten zu sowas (außer expose_php)?

PHP ist und bleibt versklavter Handlanger seiner übergeordneten Serversoftware. Wenn etwas verborgen werden soll, dann muß in dessen Quellcode eingegriffen werden.

Gruß aus Berlin!
eddi

--
Wer Rechtschreibfehler findet, darf sie behalten.