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:
PoC:
%Vor%Diese Sicherheitsanfälligkeit lässt sich leicht erkennen, wenn Sie phpinfo .
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.
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__
.
Das kann gar kein Risiko darstellen, solange Sie keine Daten vom Benutzer verwenden. Das heißt, verwenden Sie eine von diesen:
%Vor%