Serveur HTTP Apache Version 2.5
Description: | Mise en conformité avec le protocole HTTP. |
---|---|
Statut: | Extension |
Identificateur de Module: | policy_module |
Fichier Source: | mod_policy.c |
Le protocole HTTP recommande aux clients d'être "indulgents pour ce qu'ils doivent accepter", et aux serveurs d'être "stricts pour ce qu'ils envoient". Dans certains cas, il peut s'avérer difficile de déterminer si un serveur ou une application a été mal configuré, sert un contenu qui ne peut pas être mis en cache ou se comporte de manière non optimale, car le client HTTP est souvent en mesure de compenser les défauts du serveur. Ces problèmes peuvent induire une consommation de bande passante excessive, ou même une interruption de service suite à une charge trop importante du serveur.
Le module mod_policy
propose un jeu de filtres
qui permettent de tester la conformité du serveur au protocole HTTP.
Ces tests permettent à l'administrateur du serveur de journaliser
les violations, ou même de rejeter une réponse losque certaines
conditions spécifiées se réalisent.
Il devient ainsi possible de définir des critères de conformité minimale au protocole HTTP pour développer des applications sans problème. En outre, il est possible de configurer un mandataire inverse ou un cache pour qu'il se protège lui-même contre les serveurs d'origine mal configurés ou les contenus indument impossible à être mis en cache, ou un mécanisme qui détecte les erreurs de configuration au sein du serveur lui-même.
Si une règle est violée, il possible d'effectuer les actions suivantes :
Warning
ajouté à la réponse en tant qu'information à destination du client.Warning
header added to the response, and a 502
Bad Gateway
will be returned to the client. Optional links to
explanatory documentation can be added to each error message,
detailing the origin of each policy.Il est aussi possible de désactiver toutes les règles pour un
espace d'URL donné, si le besoin s'en fait sentir, via la directive
PolicyFilter
.
En outre, la directive PolicyEnvironment
permet de
spécifier une variable d'environnement qui, si elle est définie, va
court-circuiter les règles ou diminuer leur portée.
Les filtres suivants sont disponibles :
304 Not Modified
ou 412 Precondition
Failed
. Il arrive q'un serveur ignore les en-têtes
conditionnels, et cela diminue l'efficacité du mécanisme de mise en
cache HTTP. Ce filtre rejète les requêtes lorsqu'un en-tête
conditionnel était présent, et une réponse 2xx a été renvoyée au
lieu de la réponse 304 ou 412 attendue.Cache-Control: no-cache
Pragma: no-cache
Cache-Control: no-store
Cache-Control: private
s-maxage
est présent mais d'une valeur trop
faible; oumax-age
est présent mais d'une valeur trop
faible; ouExpires
est présent et invalide; ouDate
est présent et invalide; ouExpires
moins Date est trop faible ; ous-maxage
, maxage
, ou
Expires
/Date
n'est présentHTTP/1.1
HTTP/1.0
HTTP/0.9
Voici un exemple de configuration qui protège un serveur qui délivre du contenu statique :
<Location "/"> SetOutputFilter POLICY_TYPE;POLICY_LENGTH;POLICY_KEEPALIVE;POLICY_VARY;POLICY_VALIDATION; \ POLICY_CONDITIONAL;POLICY_NOCACHE;POLICY_MAXAGE;POLICY_VERSION # le contenu peut être quelconque, mais l'en-tête Content-Type doit être # présent et valide PolicyType enforce */* # rejet si aucune longueur de contenu déclarée PolicyLength enforce # pris en charge par le filtre policy length PolicyKeepalive ignore # rejet si l'en-tête User-Agent aparaît dans les en-têtes Vary PolicyVary enforce User-Agent # la validation est imposée PolicyValidation enforce # les réponses conditionnelles non conformes sont rejetées PolicyConditional enforce # les réponses impossibles à mettre en cache sont rejetées PolicyNocache enforce # la durée de vie doit être au moins d'un jour PolicyMaxage enforce 86400 # le numéro de version de la requête peut être quelconque PolicyVersion ignore HTTP/1.1 </Location> # désactivation du filtrage pour le répertoire /server-status <Location "/server-status"> PolicyFilter off </Location>
Description: | Active le filtrage des requêtes conditionnelles. |
---|---|
Syntaxe: | PolicyConditional ignore|log|enforce |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse qui aurait du être conditionnelle mais ne l'est pas sera rejetée.
# les réponses conditionnelles non conformes doivent être rejetées PolicyConditional enforce
Description: | URL contenant la description de la politique de filtrage des requêtes conditionnelles. |
---|---|
Syntaxe: | PolicyConditionalURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL de la documentation décrivant la politique de filtrage des requêtes conditionnelles ; elle apparaîtra dans les messages d'erreur.
Description: | Modification des règles de filtrage en fonction d'une variable d'environnement. |
---|---|
Syntaxe: | PolicyEnvironment variable log-value ignore-value |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Limite l'action des règles à la journalisation ou les désactive totalement en fonction de la présence d'une variable d'environnement. Si la variable spécifiée est présente et égale à la valeur de l'argument log-value, les erreurs rencontrées par les filtres ne seront que journalisées. Si la variable spécifiée est présente et égale à la valeur de l'argument ignore-value, toutes les règles seront ignorées.
# limitation de l'action des règles si la variable POLICY_CONTROL # est présente PolicyEnvironment POLICY_CONTROL log ignore
Description: | Active ou désactive le filtrage pour un espace d'URL donné. |
---|---|
Syntaxe: | PolicyFilter on|off |
Défaut: | on |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Commutateur principal qui permet d'activer ou de désactiver le filtrage pour un espace d'URL donné.
# activé par défaut <Location "/"> PolicyFilter on </Location> # désactivation du filtrage pour le répertoire /server-status <Location "/server-status"> PolicyFilter off </Location>
Description: | Active la politique de persistance. |
---|---|
Syntaxe: | PolicyKeepalive ignore|log|enforce |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse qui ne contient ni en-tête
Content-Length
, ni en-tête
Transfer-Encoding
de valeur chunked
sera
rejetée.
# rejet suite a absence d'en-tête Content-Length ou Transfer-Encoding PolicyKeepalive enforce
Description: | URL contenant la description de la politique de persistance. |
---|---|
Syntaxe: | PolicyKeepaliveURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la description de la politique de persistance ; elle apparaîtra dans les messages d'erreur.
Description: | Active le filtrage de la spécification de la longueur du contenu. |
---|---|
Syntaxe: | PolicyLength ignore|log|enforce |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse qui ne contient pas
d'en-tête Content-Length
sera rejetée.
# rejet suite à l'absence de l'en-tête Content-Length PolicyLength enforce
Description: | URL contenant la description de la politique de filtrage de la spécification de la longueur du contenu. |
---|---|
Syntaxe: | PolicyLengthURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la documentation décrivant la politique de filtrage de la spécification de la longueur du contenu ; elle apparaîtra dans les messages d'erreur.
Description: | Active le filtrage de la durée de vie des réponses. |
---|---|
Syntaxe: | PolicyMaxage ignore|log|enforce age |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse dont la durée de vie n'est
pas explicitement spécifiée via un en-tête max-age
,
s-maxage
ou Expires
, ou dont la durée de
vie est inférieure à la valeur donnée sera rejetée.
# rejet des réponses dont la durée de vie est inférieure à une # journée PolicyMaxage enforce 86400
Description: | URL contenant la description de la politique de filtrage des réponses en fonction de leur durée de vie. |
---|---|
Syntaxe: | PolicyMaxageURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage des réponses en fonction de leur durée de vie ; elle apparaîtra dans les messages d'erreur.
Description: | Active le filtrage des réponses qui se définissent elles-mêmes comme impossibles à mettre en cache. |
---|---|
Syntaxe: | PolicyNocache ignore|log|enforce |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse qui se définit elle-même
comme impossible à mettre en cache via l'en-tête
Cache-Control
ou Pragma
sera rejetée.
# une réponse contenant l'en-tête Cache-Control: no-cache sera # rejetée PolicyNocache enforce
Description: | URL contenant la description de la politique de filtrage des réponses qui se définissent elles-mêmes comme impossibles à mettre en cache. |
---|---|
Syntaxe: | PolicyNocacheURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage des réponses qui se définissent elles-mêmes comme impossibles à mettre en cache ; elle apparaîtra dans les messages d'erreur.
Description: | Active la politique des types de contenus. |
---|---|
Syntaxe: | PolicyType ignore|log|enforce type [ type [ ... ]] |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse qui ne contient pas
d'en-tête Content-Type
, ou dont l'en-tête
Content-Type
est mal formé, ou dont l'en-tête
Content-Type
contient une valeur qui ne correspond pas
au(x) modèle(s) spécifié(s) sera rejetée.
# impose le type de contenu json ou XML PolicyType enforce application/json text/xml
# rejet suite à type de contenu mal formé PolicyType enforce */*
Description: | URL contenant la description de la politique des types de contenu. |
---|---|
Syntaxe: | PolicyTypeURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la description de la politique des types de contenu ; elle apparaîtra dans les messages d'erreur.
Description: | Active le filtrage de la validation du contenu. |
---|---|
Syntaxe: | PolicyValidation ignore|log|enforce |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse qui ne contient ni en-tête
ETag
valide, ni en-tête Last-Modified
, ou
dont la syntaxe d'un de ces deux en-têtes est incorrecte sera
rejetée.
# rejet suite à l'absence des en-têtes Etag et/ou Last-Modified PolicyValidation enforce
Description: | URL contenant la description de la politique de filtrage de la validation du contenu. |
---|---|
Syntaxe: | PolicyValidationURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage de la validation du contenu ; elle apparaîtra dans les messages d'erreur.
Description: | Active la politique de filtrage de l'en-tête Vary. |
---|---|
Syntaxe: | PolicyVary ignore|log|enforce header [ header [ ... ]] |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une réponse dont l'en-tête
Vary
contient un des en-têtes spécifiés sera rejetée.
# rejet suite à la présence de l'en-tête "User-Agent" dans l'en-tête # Vary PolicyVary enforce User-Agent
Description: | URL contenant la description de la politique de filtrage de l'en-tête Vary. |
---|---|
Syntaxe: | PolicyVaryURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage de l'en-tête Vary ; elle apparaîtra dans les messages d'erreur.
Description: | Active le filtrage des requêtes en fonction du numéro de version HTTP. |
---|---|
Syntaxe: | PolicyVersion ignore|log|enforce HTTP/0.9|HTTP/1.0|HTTP/1.1 |
Défaut: | ignore |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Avec l'argument enforce, une requête dont le numéro de version HTTP est inférieur à la valeur spécifiée sera rejetée.
# rejet des requêtes dont le numéro de version HTTP est inférieur à # HTTP/1.1 PolicyVersion enforce HTTP/1.1
Description: | URL contenant la description de la politique de filtrage des requêtes en fonction du numéro de version HTTP. |
---|---|
Syntaxe: | PolicyVersionURL url |
Défaut: | none |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_policy |
Compatibilité: | Disponible à partir de la version 2.5.0 du serveur HTTP Apache. |
Cette directive permet de spécifier l'URL contenant la description de la politique de filtrage des requêtes en fonction du numéro de version HTTP ; elle apparaîtra dans les messages d'erreur.