From 9d1499833b76077071c07a1a4564837d9adfb9a6 Mon Sep 17 00:00:00 2001
From: Vincent Deffontaines Le serveur HTTP Apache propose un mécanisme de stockage d'informations
- dans des variables appelées variables d'environnement. Ces
- informations peuvent servir à contrôler diverses opérations comme
- l'enregistrement des traces ou le contrôle d'accès. On utilise aussi ces
- variables dans le mécanisme de communication avec les programmes externes
- comme les scripts CGI. Ce document présente différentes méthodes pour
+ Le serveur HTTP Apache propose un mécanisme de stockage d'informations
+ dans des variables appelées variables d'environnement. Ces
+ informations peuvent servir à contrôler diverses opérations comme
+ l'enregistrement des traces ou le contrôle d'accès. On utilise aussi ces
+ variables dans le mécanisme de communication avec les programmes externes
+ comme les scripts CGI. Ce document présente différentes méthodes pour
manipuler et utiliser ces variables. Bien que ces variables soient référencées comme variables
+ Bien que ces variables soient référencées comme variables
d'environnement, il ne faut pas les confondre avec les variables
- d'environnement contrôlées par le système d'exploitation sous-jacent.
- En fait, ces variables sont stockées et manipulées dans une structure
- interne à Apache. Elles ne deviennent de véritables variables
- d'environnement du système d'exploitation que lorsqu'elles sont mises à la
- disposition de scripts CGI et de scripts inclus côté serveur (SSI). Si vous
- souhaitez manipuler l'environnement du système d'exploitation sous lequel
- le serveur s'exécute, vous devez utiliser les mécanismes standards de
- manipulation de l'environnement fournis par l'interpréteur de commandes
- (shell) de votre système d'exploitation. La méthode la plus élémentaire pour définir une variable
- d'environnement au niveau d'Apache consiste à utiliser la directive
+ La méthode la plus élémentaire pour définir une variable
+ d'environnement au niveau d'Apache consiste à utiliser la directive
inconditionnelle Pour plus de souplesse, les directives fournies par le module
- Finalement, le module Finalement, le module En plus de l'ensemble des variables d'environnement internes à la
+ En plus de l'ensemble des variables d'environnement internes à la
configuration d'Apache et de celles transmises depuis le shell,
les scripts CGI et les pages SSI
- se voient affectés un ensemble de variables
- d'environnement contenant des méta-informations à propos de la requête
- comme préconisé dans la
- spécification
+ se voient affectés un ensemble de variables
+ d'environnement contenant des méta-informations à propos de la requête
+ comme préconisé dans la
+ spécification
sur les CGIs. La communication d'informations aux scripts CGI constitue une des
- principales utilisations des variables d'environnement. Comme indiqué
+ principales utilisations des variables d'environnement. Comme indiqué
plus haut, l'environnement transmis aux scripts CGI comprend des
- méta-informations standards à propos de la requête, en plus des
- variables définies dans la configuration d'Apache. Pour plus de
- détails, se référer au
+ méta-informations standards à propos de la requête, en plus des
+ variables définies dans la configuration d'Apache. Pour plus de
+ détails, se référer au
tutoriel CGI. Les documents inclus côté serveur (SSI) traités par le filtre
+ Les documents inclus côté serveur (SSI) traités par le filtre
L'accès au serveur peut être contrôlé en fonction de la valeur de
- variables d'environnement à l'aide des directives
+ L'accès au serveur peut être contrôlé en fonction de la valeur de
+ variables d'environnement à l'aide des directives
Les variables d'environnement peuvent être enregistrées dans le
- fichier de log des accès à l'aide de l'option Les variables d'environnement peuvent être enregistrées dans le
+ fichier de log des accès à l'aide de l'option [E=...]
pour définir
+ [E=...]
pour définir
les variables d'environnement apporte encore plus de souplesse.UNIQUE_ID
pour chaque requête à une valeur
- qui est garantie unique parmi "toutes" les requêtes sous des
- conditions très spécifiques.UNIQUE_ID
pour chaque requête à une valeur
+ qui est garantie unique parmi "toutes" les requêtes sous des
+ conditions très spécifiques.suexec.c
.INCLUDES
du module echo
,
- et peuvent utiliser des variables d'environnement dans les éléments
- de contrôle de flux pour rendre certaines parties d'une page
- conditionnelles en fonction des caractéristiques de la requête.
+ variables d'environnement à l'aide de l'élément echo
,
+ et peuvent utiliser des variables d'environnement dans les éléments
+ de contrôle de flux pour rendre certaines parties d'une page
+ conditionnelles en fonction des caractéristiques de la requête.
Apache fournit aussi les variables d'environnement CGI standards
aux pages SSI
- comme indiqué plus haut. Pour plus de détails, se référer au
+ comme indiqué plus haut. Pour plus de détails, se référer au
tutoriel SSI.allow from env=
et deny from env=
.
En association avec la directive
- %e
de la
+ %e
de la
directive gif
, ou encore de ne tracer que les requêtes des clients
- n'appartenant pas à votre sous-réseau.gif
, ou encore de ne tracer que les requêtes des clients
+ n'appartenant pas à votre sous-réseau.
La directive
Les filtres externes configurés par le module
-
Les filtres externes configurés par le module
+ disableenv=
et enableenv=
.
La forme %{ENV:variable}
de
TestString dans la
directive ENV:
ne sont pas de véritables variables
- d'environnement. Ce sont plutôt des variables spécifiques à
+ ENV:
ne sont pas de véritables variables
+ d'environnement. Ce sont plutôt des variables spécifiques à
Des problèmes d'interopérabilité ont conduit à l'introduction de - mécanismes permettant de modifier le comportement d'Apache lorsqu'il - dialogue avec certains clients. Afin de rendre ces mécanismes aussi - souples que possible, ils sont invoqués en définissant des variables - d'environnement, en général à l'aide de la directive +
Des problèmes d'interopérabilité ont conduit à l'introduction de
+ mécanismes permettant de modifier le comportement d'Apache lorsqu'il
+ dialogue avec certains clients. Afin de rendre ces mécanismes aussi
+ souples que possible, ils sont invoqués en définissant des variables
+ d'environnement, en général à l'aide de la directive
Ceci force le traitement d'une requête comme une requête HTTP/1.0 - même si elle a été rédigée dans un langage plus récent.
+Ceci force le traitement d'une requête comme une requête HTTP/1.0 + même si elle a été rédigée dans un langage plus récent.
Si le filtre DEFLATE
est activé, cette variable
- d'environnement ignorera les réglages accept-encoding de votre
- navigateur et enverra une sortie compressée inconditionnellement.
Si le filtre DEFLATE
est activé, cette variable
+ d'environnement ignorera les réglages accept-encoding de votre
+ navigateur et enverra une sortie compressée inconditionnellement.
Cette variable entraîne la suppression de tout champ
- Vary
des en-têtes de la réponse avant que cette dernière
- soit renvoyée au client. Certains clients n'interprètent pas ce champ
- correctement, et la définition de cette variable permet de contourner
- ce problème, mais implique aussi la définition de
+
Cette variable entraîne la suppression de tout champ
+ Vary
des en-têtes de la réponse avant que cette dernière
+ soit renvoyée au client. Certains clients n'interprètent pas ce champ
+ correctement, et la définition de cette variable permet de contourner
+ ce problème, mais implique aussi la définition de
force-response-1.0.
Cette variable force une réponse en langage HTTP/1.0 aux clients - qui envoient des requêtes dans le même langage. Elle fut implémentée à - l'origine suite à des problèmes avec les mandataires d'AOL. Certains - clients en langage HTTP/1.0 ne réagissent pas correctement face à une - réponse en langage HTTP/1.1, et cette variable peut être utilisée pour - assurer l'interopérabilité avec eux.
+Cette variable force une réponse en langage HTTP/1.0 aux clients + qui envoient des requêtes dans le même langage. Elle fut implémentée à + l'origine suite à des problèmes avec les mandataires d'AOL. Certains + clients en langage HTTP/1.0 ne réagissent pas correctement face à une + réponse en langage HTTP/1.1, et cette variable peut être utilisée pour + assurer l'interopérabilité avec eux.
Positionnée à "1", cette variable désactive le filtre en sortie +
Positionnée à "1", cette variable désactive le filtre en sortie
DEFLATE
fourni par le module text/html
. Si vous préférez
- utiliser des fichiers compressés statiquement,
- text/html
. Si vous préférez
+ utiliser des fichiers compressés statiquement,
+
Quand cette variable est définie, le filtre DEFLATE
du
- module
Quand cette variable est définie, le filtre DEFLATE
du
+ module
Lorsque cette variable est définie,
-
Lorsque cette variable est définie,
+
Quand cette variable est définie, la directive
-
Quand cette variable est définie, la directive
+
en
, ja
ou x-klingon
), Cette variable force le serveur à être plus prudent lors de l'envoi - d'une redirection au client. Elle est en général utilisée quand un - client présente un problème connu avec les redirections. Elle fut - implémentée à l'origine suite a un problème rencontré avec le logiciel - WebFolders de Microsoft qui ne gère pas correctement les redirections - vers des ressources de type répertoire via des méthodes DAV.
+Cette variable force le serveur à être plus prudent lors de l'envoi + d'une redirection au client. Elle est en général utilisée quand un + client présente un problème connu avec les redirections. Elle fut + implémentée à l'origine suite a un problème rencontré avec le logiciel + WebFolders de Microsoft qui ne gère pas correctement les redirections + vers des ressources de type répertoire via des méthodes DAV.
Disponible dans les versions postérieures à 2.0.54
+Disponible dans les versions postérieures à 2.0.54
-Quand Apache génère une redirection en réponse à une requête client, - la réponse inclut un texte destiné à être affiché au cas où le client ne +
Quand Apache génère une redirection en réponse à une requête client, + la réponse inclut un texte destiné à être affiché au cas où le client ne suivrait pas, ou ne pourrait pas suivre automatiquement la redirection. - Habituellement, Apache marque ce texte en accord avec le jeu de caractères - qu'il utilise, à savoir ISO-8859-1.
-Cependant, si la redirection fait référence à une page qui utilise un - jeu de caractères différent, certaines versions de navigateurs obsolètes - essaieront d'utiliser le jeu de caractères du texte de la redirection - plutôt que celui de la page réelle. - Ceci peut entraîner, par exemple, un rendu incorrect du Grec.
-Si cette variable d'environnement est définie, Apache omettra le jeu de - caractères pour le texte de la redirection, et les navigateurs obsolètes - précités utiliseront correctement celui de la page de destination.
+ Habituellement, Apache marque ce texte en accord avec le jeu de caractères + qu'il utilise, à savoir ISO-8859-1. +Cependant, si la redirection fait référence à une page qui utilise un + jeu de caractères différent, certaines versions de navigateurs obsolètes + essaieront d'utiliser le jeu de caractères du texte de la redirection + plutôt que celui de la page réelle. + Ceci peut entraîner, par exemple, un rendu incorrect du Grec.
+Si cette variable d'environnement est définie, Apache omettra le jeu de + caractères pour le texte de la redirection, et les navigateurs obsolètes + précités utiliseront correctement celui de la page de destination.
L'envoi de pages d'erreur sans spécifier un jeu de caractères peut - conduire à des attaques de type "cross-site-scripting" pour les - navigateurs qui ne respectent pas la spécification HTTP/1.1 (MSIE) et - tentent de déduire le jeu de caractères à partir du contenu. De tels - navigateurs peuvent être facilement trompés et utiliser le jeu de - caractères UTF-7 ; les contenus des données en entrée de type UTF-7 - (comme les URI de requête) ne seront alors plus protégés par les - mécanismes d'échappement usuels conçus pour prévenir les attaques +
L'envoi de pages d'erreur sans spécifier un jeu de caractères peut + conduire à des attaques de type "cross-site-scripting" pour les + navigateurs qui ne respectent pas la spécification HTTP/1.1 (MSIE) et + tentent de déduire le jeu de caractères à partir du contenu. De tels + navigateurs peuvent être facilement trompés et utiliser le jeu de + caractères UTF-7 ; les contenus des données en entrée de type UTF-7 + (comme les URI de requête) ne seront alors plus protégés par les + mécanismes d'échappement usuels conçus pour prévenir les attaques de type "cross-site-scripting".
Ces directives modifient le comportement protocolaire du module
Les versions antérieures recommandaient l'ajout de ces lignes dans - httpd.conf pour tenir compte de problèmes connus avec certains clients. - Comme les clients concernés sont maintenant très peu utilisés, cet - ajout n'est pratiquement plus nécessaire.
+Les versions antérieures recommandaient l'ajout de ces lignes dans + httpd.conf pour tenir compte de problèmes connus avec certains clients. + Comme les clients concernés sont maintenant très peu utilisés, cet + ajout n'est pratiquement plus nécessaire.
# # The following directives modify normal HTTP response behavior. @@ -468,13 +468,13 @@ BrowserMatch "JDK/1\.0" force-response-1.0
Dans cet exemple, les requêtes pour des images n'apparaissent pas - dans le fichier de trace des accès. Il peut être facilement adapté pour - empêcher le traçage de répertoires particuliers, ou de requêtes - en provenance de certains hôtes.
+Dans cet exemple, les requêtes pour des images n'apparaissent pas + dans le fichier de trace des accès. Il peut être facilement adapté pour + empêcher le traçage de répertoires particuliers, ou de requêtes + en provenance de certains hôtes.
Cet exemple montre comment empêcher les utilisateurs ne faisant pas +
Cet exemple montre comment empêcher les utilisateurs ne faisant pas
partie de votre serveur d'utiliser des images de votre serveur comme
images en ligne dans leurs pages. Cette configuration n'est pas
- recommandée, mais elle peut fonctionner dans des circonstances bien
- définies. Nous supposons que toutes vos images sont enregistrées dans
- un répertoire nommé /web/images
.
/web/images
.