Heim  >  Artikel  >  Backend-Entwicklung  >  Wie zuverlässig sind $_SERVER-Variablen in der PHP-Sicherheit?

Wie zuverlässig sind $_SERVER-Variablen in der PHP-Sicherheit?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 16:03:02812Durchsuche

How Reliable Are $_SERVER Variables in PHP Security?

Bewertung der Sicherheit von $_SERVER-Variablen

HTTP-Anfrageheader enthalten häufig Informationen, die vom Benutzer gesteuert werden können. Folglich können viele $_SERVER-Variablen durch böswillige Eingaben beeinträchtigt werden und zu einer Angriffsquelle werden.

Kontrollierte Werte verstehen

Servergesteuerte Variablen wie „SERVER_ADDR“ und „SERVER_SOFTWARE“, werden durch die Serverkonfiguration festgelegt und sind von Natur aus sicher.

Teilweise hängen servergesteuerte Variablen davon ab die Anfrage und haben begrenzte gültige Werte, was sie zuverlässig macht. Beispiele hierfür sind „REMOTE_ADDR“ und „REQUEST_TIME“.

Beliebige benutzergesteuerte Werte

Im Gegensatz dazu können beliebige benutzergesteuerte Werte jede vom Client gesendete Eingabe enthalten. einschließlich potenziell schädlicher Inhalte. Variablen wie „HTTP_USER_AGENT“ und „PHP_SELF“ fallen in diese Kategorie.

Bewertung der Zuverlässigkeit

Die Bestimmung der Zuverlässigkeit von $_SERVER-Variablen hängt von der spezifischen Verwendung und Serverkonfiguration ab . Zum Beispiel:

  • 'REMOTE_ADDR' ist im Allgemeinen zuverlässig, kann aber bei DNS-Angriffen gefälscht werden.
  • 'HTTP_HOST' kann als sicher angesehen werden, wenn der Server Anfragen mit ungültigen Host-Headern ablehnt.
  • 'REQUEST_METHOD' ist zuverlässig, wenn der Server dies zulässt Methoden.

Kategorisierung von $_SERVER-Variablen

  • Server gesteuert:

    • 'GATEWAY_INTERFACE'


    • 'SERVER_SOFTWARE'


    • 'SERVER_ADMIN'

    • 'S ERVER_SIGNATURE'


  • Teilweise Server kontrolliert:

    • 'HTTPS'

    • 'REQUEST_TIME'

    • ' FERNBEDIENUNG _ADDR'

    • 'REMOTE_HOST'

    • 'REMOTE_PORT'

    • 'SERVER_PROTO COL'

    • 'HTTP_HOST'

    • 'SERVER_NAME'

    • 'SCRIPT_FILENAME '

    • 'SERVER_PORT'

    • 'SCRIPT_NAME'


  • Völlig willkürliche, vom Benutzer kontrollierte Werte:

    • 'argv', 'argc'

    • 'REQUEST_METHOD'

    • 'QUERY_STRING'
    • 'HTTP_ACCEPT'

    • 'HTTP_ACCEPT_CHARSET'

    • 'HTTP_ACCEPT_ENCODING'

    • 'HTTP_ACCEPT_LANGUAGE'


    • 'HTTP_REFERER'

    • 'HTTP_USER_ AGENT'

    • 'AUTH_TYPE'

    • 'PHP_AUTH_DIGEST'

    • 'PHP_AUTH_USER'

    • 'PHP_AUTH_PW'

    • 'PAT H_INFO'

    • 'ORIG_PATH_INFO'

    • 'REQUEST_URI'
    • 'PHP_SELF'

    • 'PATH_TRANSLATED'

    • Beliebig anderer 'HTTP_'-Wert



Berücksichtigen Sie den Kontext und die möglichen Konsequenzen, bevor Sie einem $_SERVER vertrauen variabel.

Das obige ist der detaillierte Inhalt vonWie zuverlässig sind $_SERVER-Variablen in der PHP-Sicherheit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn