Wie "manipulationssicher" ist die Variable $ _SERVER in PHP?

8

Würde ich ein großes Sicherheitsrisiko eingehen, indem ich dem Inhalt des $ _SERVER-Variablenarrays den Namen der PHP-Datei mit $ _SERVER ['PHP_SELF'] verschaffe?

    
CLJ 22.11.2010, 16:31
quelle

4 Antworten

3

Viele, aber nicht alle $ _SERVER-Variablen werden von einem Angreifer kontrolliert . Zum Beispiel ist $_SERVER['SCRIPT_NAME'] sicher, wo $_SEVER['PHP_SELF'] eine gefährliche Variable ist und oft die Quelle von xss ist:

%Vor%

PoC:

%Vor%

Diese Sicherheitsanfälligkeit lässt sich leicht erkennen, wenn Sie phpinfo .

    
rook 22.11.2010, 18:36
quelle
1

Von dem php.net Handbuch :

  

Die Einträge in diesem Array werden vom Webserver erstellt. Es gibt keine Garantie, dass jeder Webserver diese zur Verfügung stellt. Server können einige auslassen oder andere bereitstellen, die hier nicht aufgeführt sind.

Wenn Sie also alle Benutzer kennen, die Zugriff auf die Serverkonfiguration haben (und alle Skripts in Ihrer Sitzung, die den Inhalt der Variablen ändern können), können Sie die Daten der $_SERVER -Variablen einigermaßen sicher erkennen.

    
Stephen 22.11.2010 16:35
quelle
0

Es gibt keinen speziellen Mechanismus, um diese Variable zu schützen. Sie können in jede andere Variable schreiben. Sie müssen es also wie jede andere Variable vor Manipulationen schützen (deaktivieren Sie register_globals, vermeiden Sie Variablenvariablen usw.). Dann kannst du es vertrauen.

Um das Problem zu umgehen, können Sie bereits früh in Ihrem Programm eigene Konstanten definieren:

%Vor%

und verwende vordefinierte Konstanten, falls verfügbar, z. __FILE__ .

    
AndreKR 22.11.2010 16:34
quelle
0

Das kann gar kein Risiko darstellen, solange Sie keine Daten vom Benutzer verwenden. Das heißt, verwenden Sie eine von diesen:

%Vor%     
Aurel Bílý 22.11.2010 16:35
quelle

Tags und Links