Maison >développement back-end >tutoriel php >Quelle est la fiabilité des variables $_SERVER dans la sécurité PHP ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 16:03:02858parcourir

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!

Déclaration:
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