From b8a8f3fb107c854707dbbf5956cdd969728370d6 Mon Sep 17 00:00:00 2001 From: Gregory Colpart Date: Mon, 13 Nov 2023 15:33:32 +0100 Subject: [PATCH] Ajout RW pour sortir une 403 + explications sur la plomberie Require --- HowtoApache.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/HowtoApache.md b/HowtoApache.md index 3f4aacf3..ba8dc747 100644 --- a/HowtoApache.md +++ b/HowtoApache.md @@ -801,6 +801,8 @@ Substitute "s/REGEXP/REMPLACEMENT/i" ## Autorisations +### Require + Historiquement Apache, utilisait les directives `Order`, `Allow`, `Deny`, et `Satisfy` pour définir les autorisations des ressources qu'il fournissait. Depuis la version 2.4 ces directives sont dépréciées, il ne faut donc plus les utiliser ; bien qu'elles soient toujours utilisables via le module [`mod_access_compat`](https://httpd.apache.org/docs/2.4/fr/mod/mod_access_compat.html). Ces quatres directives sont remplacées par `Require` fournies par le module [`mod_authz_host`](https://httpd.apache.org/docs/2.4/fr/mod/mod_authz_host.html) ; la migration sommaire d'un module à l'autre est décrit dans la [release note 2.4](https://httpd.apache.org/docs/2.4/fr/upgrading.html#run-time). **/!\\ Il ne faut jamais mélanger d'anciennes directives comme Order, Allow ou Deny avec des nouvelles comme Require, car le comportement n'est pas défini ce qui vous emenera dans du deboguage interminable. /!\\** @@ -845,6 +847,66 @@ AuthUserFile /foo/.htpasswd ~~~ +#### Plomberie Require (à valider) + + + +Apache va prendre en compte toutes les sections `` (ou ``) de la plus large à la plus précise : + +* Tout d'abord la (ou les) section(s) `` +* Ensuite `` +* Ensuite `` +* etc. + +Les options explicites de la section la plus précise écraseront les options explicites précédentes. + +Si il y a plusieurs sections `` identiques, Apache va les évaluer dans cet ordre : + +* Configuration générale +* Dans `` +* Dans les fichiers `.htaccess` + +Les options explicites dans `` écrasent celles de la configuration générale. +Les options explicites des fichiers `.htaccess` écrasent celles dans `` + +Enfin, si dans un même niveau de section il y a des options identiques, ce sont les dernières qui écrasent les premières. + +Voici un exemple : + +~~~ + + Require ip 192.0.2.21 + + + + Require ip 192.0.2.23 + + + + Require ip 192.0.2.24 + + + + Servername www.example.com + DocumentRoot /home/foo/www + + + Require ip 192.0.2.22 + + + + Require ip 192.0.2.25 + + + +~~~ + +Les évaluations se font de l'IP la plus petite à la plus grande... eu final, seule l'IP 192.0.2.25 est autorisée ! + +Note : les options peuvent aussi être utilisées dans une section ``, elles vont écraser les options `` (ou ``) mais on préfèrera éviter. + +Note 2 : l'écrasement des options correspond à l'option par défaut `AuthMerging Off` mais cela [peut se changer](https://httpd.apache.org/docs/current/fr/mod/mod_authz_core.html#authmerging) + ### Authentification HTTP #### HTTP Basic Authentication (mod_auth_basic) @@ -995,6 +1057,9 @@ RewriteRule (.*) /page-destination [QSD,R=301,L] RewriteCond %{REQUEST_URI} (.*page.php)\/(key=.*) RewriteRule (.*) /%1?%2 [QSD,R=301,L] +# Envoyer une erreur 403 en fonction de l'entête User-Agent +RewriteCond %{HTTP_USER_AGENT} "FooBot" +RewriteRule .* - [F,L] ~~~ Pour supprimer un Query String avec une Rewrite Rule :