From 404e8b8ec7e3fc75f770a35ced4d6017c50639fb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Igor=20Gali=C4=87?= Date: Wed, 29 Dec 2010 16:17:40 +0000 Subject: [PATCH] update transformations git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1053664 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/env.html.fr | 38 +++ docs/manual/howto/cgi.html.fr | 19 +- docs/manual/mod/core.html.de | 2 +- docs/manual/mod/core.html.fr | 172 +++-------- docs/manual/mod/mod_headers.html.fr | 50 +++- docs/manual/mod/mod_headers.xml.ja | 2 +- docs/manual/mod/mod_headers.xml.ko | 2 +- docs/manual/new_features_2_4.html.fr | 12 +- docs/manual/vhosts/details.html.fr | 394 +++++++++---------------- docs/manual/vhosts/details.xml.meta | 2 +- docs/manual/vhosts/examples.html.fr | 53 +--- docs/manual/vhosts/examples.xml.meta | 2 +- docs/manual/vhosts/index.html.fr | 3 - docs/manual/vhosts/index.xml.meta | 2 +- docs/manual/vhosts/name-based.html.fr | 82 ++--- docs/manual/vhosts/name-based.xml.meta | 2 +- 16 files changed, 330 insertions(+), 507 deletions(-) diff --git a/docs/manual/env.html.fr b/docs/manual/env.html.fr index f2dbdce4c4..f619ee0bc1 100644 --- a/docs/manual/env.html.fr +++ b/docs/manual/env.html.fr @@ -136,6 +136,14 @@ seront remplacés par un caractère "sousligné" quand ils seront transmis aux scripts CGI et aux pages SSI. +
  • Les contenus d'en-têtes HTTP transmis aux scripts de type + CGI ou autre via des variables d'environnement constituent un + cas particulier (voir plus loin). Leur nom est converti en + majuscules et seuls les tirets sont remplacés par des + caractères '_' ("souligné") ; si le format du nom de l'en-tête + n'est pas valide, celui-ci est ignoré. Voir plus loin pour une solution de + contournement du problème.
  • +
  • La directive SetEnv s'exécute assez tard au cours du traitement de la requête, ce qui signifie que des directives telles que SetEnvIf et RewriteCond ne verront pas @@ -410,6 +418,36 @@

    Exemples

    +

    Transmission du contenu d'en-têtes non valides aux scripts + CGI

    + + +

    Avec la version 2.4, Apache est plus strict avec la conversion + des en-têtes HTTP en variables d'environnement dans + mod_cgi et d'autres modules : dans les versions + précédentes, tout caractère invalide dans les noms d'en-têtes + était tout simplement remplacé par un caractère '_', ce qui + pouvait exposer à des attaques de type cross-site-scripting via + injection d'en-têtes (voir Bogues + du Web inhabituelles, planche 19/20).

    + +

    Si vous devez supporter un client qui envoie des en-têtes non + conformes et si ceux-ci ne peuvent pas être corrigés, il existe + une solution de contournement simple mettant en jeu les modules + mod_setenvif et mod_header, + et permettant de prendre en compte ces en-têtes :

    + +
    +# 
    +# L'exemple suivant montre comment prendre en compte un en-tête
    +# Accept_Encoding non conforme envoyé par un client.
    +#
    +SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
    +RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding
    +
    + + +

    Modification du comportement protocolaire face à des clients réagissant de manière non conforme

    diff --git a/docs/manual/howto/cgi.html.fr b/docs/manual/howto/cgi.html.fr index aed7f8364f..3fd60e4e6a 100644 --- a/docs/manual/howto/cgi.html.fr +++ b/docs/manual/howto/cgi.html.fr @@ -365,9 +365,6 @@

    Assurez-vous qu'il s'agit bien du chemin correct vers l'interpréteur.

    -

    De plus, si votre programme CGI dépend d'autres variables d'environnement, vous devrez vous - assurer qu'elles lui sont bien transmises par Apache.

    -
    Lors de l'édition de scripts CGI sous Windows, il se peut que des caractères de fin de ligne soient ajoutés au chemin de @@ -378,6 +375,22 @@ faisant partie du nom de fichier de l'interpréteur.
    + + +

    Variables d'environnement manquantes

    + + +

    Si votre programme CGI dépend de variables + d'environnement non standards, vous devrez vous assurez que + ces variables lui sont bien transmises par Apache.

    + +

    Lorsque des en-têtes HTTP ne sont pas transmis à + l'environnement, assurez-vous qu'ils sont bien formatés selon la + RFC 2616, section + 4.2 : les noms d'en-têtes doivent commencer par une lettre, + elle-même suivie de lettres, chiffres ou traits d'union. Tout + en-tête dont le nom viole cette règle sera ignoré.

    +

    Erreurs inhérentes au programme

    diff --git a/docs/manual/mod/core.html.de b/docs/manual/mod/core.html.de index e1699ef74c..6f3a4e32df 100644 --- a/docs/manual/mod/core.html.de +++ b/docs/manual/mod/core.html.de @@ -121,7 +121,7 @@ Protokolle Kompatibilität:Verfügbar ab Apache 2.1.5

    Diese Direktive aktiviert betriebssystemspezifische Optimierungen - für lauschende Sockets anhand des Protokolltyps. Die grundlegende + für lauschende Sockets anhand des Protokolltyps. Der grundlegende Ansatz ist, dass der Kernel das Socket nicht an den Serverprozess übergibt, bis entweder Daten verfügbar sind oder eine komplette HTTP-Anfrage zwischengespeichert wurde. Derzeit werden diff --git a/docs/manual/mod/core.html.fr b/docs/manual/mod/core.html.fr index 1898f93d1b..50ae461ea9 100644 --- a/docs/manual/mod/core.html.fr +++ b/docs/manual/mod/core.html.fr @@ -702,7 +702,7 @@ sous-r </Directory>

    - <Directory /home/>
    + <Directory /home>
    AllowOverride FileInfo
    @@ -2048,10 +2048,9 @@ possible depuis les versions 2.3.2 et sup est élévé, plus nombreux seront les processus serveur en attente de requêtes de la part de clients inactifs.

    -

    Dans un contexte de serveur virtuel à base de nom, c'est le délai - du premier serveur virtuel défini (le serveur par défaut) parmi un - ensemble de directives NameVirtualHost qui sera utilisé. Les - autres valeurs seront ignorées.

    +

    Dans un contexte de serveur virtuel à base de nom, c'est + la valeur de la paire adresse IP/port du serveur virtuel qui + correspond le mieux qui sera utilisée.

    top
    @@ -2306,8 +2305,7 @@ requ

    Avertissement

    Dans le cas des serveurs virtuels à base de noms, la valeur de cette directive est extraite du serveur virtuel par défaut (le - premier de la liste) pour lequel la connexion correspondait à la - directive NameVirtualHost.

    + premier de la liste) pour la paire adresse IP/port.

    @@ -2354,11 +2352,10 @@ requ

    Avertissement

    Dans le cas des serveurs virtuels à base de noms, la valeur de cette directive est extraite du serveur virtuel par défaut (le - premier de la liste) pour lequel la connexion correspondait à la - directive NameVirtualHost.

    + premier de la liste) pour lequel la paire adresse IP/port + correspond le mieux.

    -
    top

    LimitRequestLine Directive

    @@ -2402,8 +2399,8 @@ HTTP

    Avertissement

    Dans le cas des serveurs virtuels à base de noms, la valeur de cette directive est extraite du serveur virtuel par défaut (le - premier de la liste) pour lequel la connexion correspondait à la - directive NameVirtualHost.

    + premier de la liste) pour lequel la paire adresse IP/port + correspond le mieux.

    @@ -3013,7 +3010,7 @@ verrou pour tous les mutex ou seulement les mutex sp sera /var/httpd/locks/mpm-accept.12345.

    Sécurité

    -

    Il est déconseillé d'éviter de placer les fichiers mutex +

    Il est conseillé d'éviter de placer les fichiers mutex dans un répertoire où tout le monde peut écrire comme /var/tmp, car quelqu'un pourrait initier une attaque par déni de service et empêcher le serveur de démarrer en créant un @@ -3104,81 +3101,15 @@ nom Module:core -

    Une seule directive NameVirtualHost permet -d'identifier un ensemble de serveurs virtuels identiques que le serveur -va sélectionner en fonction du nom d'hôte spécifié par le -client. La directive NameVirtualHost est -obligatoire si vous souhaitez configurer des serveurs virtuels à base de nom.

    - -

    Cette directive, ainsi que les directives VirtualHost correspondantes, doit comporter un -numéro de port si le serveur supporte les connexions HTTP et HTTPS.

    - -

    Bien que adresse puisse contenir un nom d'hôte, il est -recommandé d'utiliser plutôt une adresse IP ou un nom d'hôte avec -caractères génériques. Une directive NameVirtualHost contenant des -caractères génériques ne peut correspondre qu'à des serveurs virtuels -qui contiennent aussi des caractères génériques dans leur argument.

    - -

    Dans les cas où un pare-feu ou autre mandataire reçoit les requêtes -et les redirige sous une adresse IP différente vers le serveur, vous -devez spécifier l'adresse IP de l'interface physique de la machine qui -va servir les requêtes.

    - -

    Dans l'exemple ci-dessous, les requêtes reçues sur l'interface -192.0.2.1 et le port 80 ne vont déclencher une sélection que parmi les -deux premiers serveurs virtuels. Les requêtes reçues sur le port 80 et -sur toute interface ne vont déclencher une sélection que parmi les -troisième et quatrième serveurs virtuels. D'une manière générale, -lorsque l'interface ne constitue pas un critère important de sélection, -la valeur "*:80" suffit pour les directives NameVirtualHost et -VirtualHost.

    - -

    - NameVirtualHost 192.0.2.1:80
    - NameVirtualHost *:80

    - - <VirtualHost 192.0.2.1:80>
    -   ServerName namebased-a.example.com
    - </VirtualHost>
    -
    - <VirtualHost 192.0.2.1:80>
    -   Servername namebased-b.example.com
    - </VirtualHost>
    -
    - <VirtualHost *:80>
    -   ServerName namebased-c.example.com
    - </VirtualHost>
    -
    - <VirtualHost *:80>
    -   ServerName namebased-d.example.com
    - </VirtualHost>
    -
    - -

    - -

    Si aucun serveur virtuel ne correspond, c'est le premier serveur - virtuel correspondant à l'adresse IP qui sera utilisé.

    - -

    Les adresses IPv6 doivent être entourées de crochets, comme dans - l'exemple suivant :

    - -

    - NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080 -

    - - - -

    Argument de la directive <VirtualHost>

    -

    Notez que l'argument de la directive <VirtualHost> doit être identique à - l'argument de la directive NameVirtualHost.

    - -

    - NameVirtualHost 192.0.2.2:80
    - <VirtualHost 192.0.2.2:80>
    - # ...
    - </VirtualHost>
    -

    -
    +

    Avant la version 2.3.11, il était nécessaire de définir une + directive NameVirtualHost pour indiquer au + serveur qu'une paire adresse IP/port particulière pouvait être + utilisée comme serveur virtuel à base de nom. Depuis la version + 2.3.11, chaque fois qu'une paire adresse IP/port est utilisée dans + plusieurs serveurs virtuels, l'hébergement virtuel à base de nom est + automatiquement activé pour cette adresse.

    + +

    Cette directive n'a actuellement plus aucun effet.

    Voir aussi

      @@ -3303,11 +3234,12 @@ particulier - est supprimée de la liste des options courantes de la même manière.

      -

      Avertissement

      +

      Note

      Mélanger des Options avec + ou - avec des Options sans + ou - constitue une erreur de syntaxe, et - peut résulter en des comportements inattendus.

      + la vérification de la syntaxe au cours du démarrage du serveur fera + échouer ce dernier.

      Par exemple, sans aucun symbole + et - @@ -3788,7 +3720,6 @@ le serveur HTTP Apache du serveur HTTP Apache

    • UseCanonicalName
    • UseCanonicalPhysicalPort
    • -
    • NameVirtualHost
    • ServerAlias
    @@ -4310,7 +4241,8 @@ d'h pour un document hébergé par un serveur virtuel particulier, il applique les directives de configuration rassemblées dans la section <VirtualHost>. adresse - IP peut être :

    + IP peut être une des entités suivantes, éventuellement suivies + d'un caractère ':' et d'un numéro de port (ou *) :

    • L'adresse IP du serveur virtuel ;
    • @@ -4318,18 +4250,16 @@ d'h
    • Un nom de domaine entièrement qualifié correspondant à l'adresse IP du serveur virtuel (non recommandé) ;
    • -
    • Le caractère *, qui n'est utilisé qu'en - combinaison avec NameVirtualHost * pour intercepter - toutes les adresses IP ; ou
    • +
    • Le caractère *, qui agit comme un + caractère générique, et correspond à toute adresse IP.
    • + +
    • La chaîne _default_, dont la signification est + identique à celle du caractère *
    • -
    • La chaîne de caractères _default_, qui n'est - utilisée qu'avec l'hébergement virtuel à base d'adresse IP pour - intercepter les adresses IP qui ne correspondent à aucun serveur - virtuel.

    Exemple

    - <VirtualHost 10.1.2.3>
    + <VirtualHost 10.1.2.3:80>
    ServerAdmin webmaster@host.example.com
    DocumentRoot /www/docs/host.example.com
    @@ -4347,7 +4277,7 @@ d'h :

    - <VirtualHost [2001:db8::a00:20ff:fea7:ccea]>
    + <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80>
    ServerAdmin webmaster@host.example.com
    DocumentRoot /www/docs/host.example.com
    @@ -4371,35 +4301,29 @@ d'h assurer que les adresses des serveurs virtuels sont bien incluses dans la liste des adresses précisées par la directive Listen.

    - -

    Avec l'hébergement virtuel à base d'adresse IP, on peut utiliser - le nom spécial _default_, auquel cas le serveur virtuel - considéré interceptera toute adresse IP qui n'est pas explicitement - associée à un autre serveur virtuel. En l'absence de serveur virtuel - associé à _default_, et si l'adresse IP demandée ne - correspond à aucun serveur virtuel, c'est la configuration du - serveur "principal" qui sera utilisée, c'est à dire l'ensemble des - définitions situées en dehors de toute section VirtualHost.

    - -

    Vous pouvez spécifier :port pour modifier le port du - serveur virtuel. S'il n'est pas spécifié, sa valeur par défaut - correspond à celle qui est définie par la dernière directive - Listen du serveur - principal. Vous pouvez aussi spécifier :* pour accepter - tous les ports associés à l'adresse du serveur virtuel (c'est une - configuration recommandée lorsqu'on utilise - _default_).

    - +

    Tout bloc <VirtualHost> doit comporter une directive ServerName. Dans le cas contraire, le serveur virtuel héritera de la valeur de la directive ServerName issue de la configuration du serveur principal.

    -

    Si aucun serveur virtuel ne correspond, c'est le premier serveur - virtuel correspondant à l'adresse IP qui sera utilisé. Par - conséquent, le premier serveur virtuel défini est le serveur virtuel - par défaut.

    +

    A l'arrivée d'une requête, le serveur tente de la + faire prendre en compte par la section <VirtualHost> qui correspond le mieux en ne + se basant que sur la paire adresse IP/port. Les chaînes sans + caractères génériques l'emportent sur celles qui en contiennent. Si + aucune correspondance du point de vue de l'adresse IP/port n'est + trouvée, c'est la configuration du serveur "principal" qui sera + utilisée.

    + +

    Si plusieurs serveurs virtuels correspondent du point de vue de + l'adresse IP/port, le serveur sélectionne celui qui correspond le + mieux du point de vue du nom d'hôte de la requête. Si aucune + correspondance du point de vue du nom d'hôte n'est trouvée, c'est le + premier serveur virtuel dont l'adresse IP/port correspond qui sera + utilisé. Par voie de conséquence, le premier serveur virtuel + comportant une certaine paire adresse IP/port est le serveur virtuel + par défaut pour cette paire adresse IP/port.

    Sécurité

    Voir le document sur les conseils à propos de sécurité diff --git a/docs/manual/mod/mod_headers.html.fr b/docs/manual/mod/mod_headers.html.fr index 4fba2ae35a..ffe60ca01f 100644 --- a/docs/manual/mod/mod_headers.html.fr +++ b/docs/manual/mod/mod_headers.html.fr @@ -228,8 +228,8 @@ tardif Annuler:FileInfo Statut:Extension Module:mod_headers -Compatibilité:La condition par défaut passe de "onsuccess" à "always" à -partir de la version 2.3.9 +Compatibilité:La condition par défaut est temporairement passée +à "always" dans les version 2.3.9 et 2.3.10

    Cette directive permet de remplacer, fusionner, ou supprimer des en-têtes de réponse HTTP. L'en-tête est modifié juste @@ -237,20 +237,38 @@ partir de la version 2.3.9 s'exécutent, ce qui permet la modification des en-têtes sortants.

    -

    A partir de la version 2.3.9, la condition par défaut est - "always", ce qui implique que cette directive agit sans tenir compte - du code d'état de la réponse. Dans les versions 2.3.8 et - antérieures, "onsuccess" était la condition par défaut, ce qui - impliquait que les en-têtes n'étaient modifiés que pour les réponses - avec code d'état 2xx.

    - -

    Une valeur effective always peut être nécessaire - pour forcer la définition des en-têtes par certains modules internes - (tels que mod_cgi), même dans le cas de réponses - positives, et doit toujours être présente pour modifier les réponses avec un code - d'état autre que 2xx, comme les redirections - ou les erreurs clients.

    - +

    L'argument optionnel condition permet de déterminer + sur quelle table interne d'en-têtes de réponses cette directive va + opérer. D'autres composants du serveur peuvent avoir stocké leurs + en-têtes de réponses dans la table correspondant à + onsuccess ou dans celle correspondant à + always. Dans ce contexte, "Always" fait référence au + choix d'envoyer les en-têtes que vous ajoutez aux réponses, qu'elle + soient avec succès ou échouées ; par contre, si votre action est une + fonction d'un en-tête existant, vous devrez lire la documentation de + manière plus approfondie car dans ce cas, les choses se compliquent.

    + +

    Vous pouvez avoir à changer la valeur par défaut + onsuccess en always dans des circonstances + similaires à celles exposées plus loin. Notez aussi que la répétition + de cette directive avec les deux conditions peut être pertinente + dans certains scénarios, car always n'englobe pas + onsuccess en ce qui concerne les en-têtes existants :

    + +
      +
    • Vous ajoutez un en-tête à une réponse échouée (non-2xx), + une redirection par exemple, et dans ce cas, seule la table + correspondant à always est utilisée dans la réponse + définitive.
    • +
    • Vous modifiez ou supprimez un en-tête généré par un script + CGI, et dans ce cas, les scripts CGI sont dans la table + correspondant à always et non dans la table par + défaut.
    • +
    • Vous modifiez ou supprimez un en-tête généré par tel ou tel + composant du serveur, mais cet en-tête n'est pas trouvé par la + condition par défaut onsuccess.
    • +
    +

    L'action que cette directive provoque est déterminée par le premier argument (ou par le second argument si une condition est spécifiée). Il peut prendre diff --git a/docs/manual/mod/mod_headers.xml.ja b/docs/manual/mod/mod_headers.xml.ja index 5f323dd72a..9fcaebaa73 100644 --- a/docs/manual/mod/mod_headers.xml.ja +++ b/docs/manual/mod/mod_headers.xml.ja @@ -1,7 +1,7 @@ - + +