Quelle est la fiabilité des variables $_SERVER dans la sécurité PHP ?

Barbara Streisand
Libérer: 2024-11-12 16:03:02
original
813 Les gens l'ont consulté

How Reliable Are $_SERVER Variables in PHP Security?

Évaluation de la sécurité des variables $_SERVER

Les en-têtes de requête HTTP contiennent souvent des informations qui peuvent être contrôlées par l'utilisateur. Par conséquent, de nombreuses variables $_SERVER peuvent être entachées par des entrées malveillantes et devenir une source d'attaque.

Comprendre les valeurs contrôlées

Variables contrôlées par le serveur, telles que « SERVER_ADDR » et 'SERVER_SOFTWARE', sont définis par la configuration du serveur et sont intrinsèquement sûrs.

Partiellement contrôlé par le serveur les variables dépendent de la requête et ont des valeurs valides limitées, ce qui les rend fiables. Les exemples incluent « REMOTE_ADDR » et « REQUEST_TIME ».

Valeurs arbitraires contrôlées par l'utilisateur

En revanche, les valeurs arbitraires contrôlées par l'utilisateur peuvent contenir n'importe quelle entrée envoyée par le client, y compris du contenu potentiellement malveillant. Les variables telles que « HTTP_USER_AGENT » et « PHP_SELF » entrent dans cette catégorie.

Évaluation de la fiabilité

La détermination de la fiabilité des variables $_SERVER dépend de l'utilisation spécifique et de la configuration du serveur. . Par exemple :

  • 'REMOTE_ADDR' est généralement fiable, mais peut être usurpé lors d'attaques DNS.
  • 'HTTP_HOST' peut être considéré comme sûr si le serveur rejette les requêtes avec des en-têtes d'hôte non valides.
  • 'REQUEST_METHOD' est fiable si le serveur restreint autorisé méthodes.

Catégorisation des variables $_SERVER

  • Serveur contrôlé :

    • 'GATEWAY_INTERFACE'


    • 'SERVER_SOFTWARE'


    • 'SERVER_ADMIN'

    • 'S ERVER_SIGNATURE'


  • En partie serveur contrôlé :

    • 'HTTPS'

    • 'REQUEST_TIME'

    • ' TÉLÉCOMMANDE _ADDR'

    • 'REMOTE_HOST'

    • 'REMOTE_PORT'

    • 'SERVER_PROTO COL'

    • 'HTTP_HOST'

    • 'SERVER_NAME'

    • 'SCRIPT_FILENAME '

    • 'SERVER_PORT'

    • 'SCRIPT_NAME'


  • Valeurs entièrement arbitraires contrôlées par l'utilisateur :

    • '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'

    • Tout autre valeur 'HTTP_'



Considérez le contexte et les conséquences potentielles avant de faire confiance à un $_SERVER variable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal