Ticket #1979 (closed defect: fixed)
.htaccess incorrects pour apache v2.24+
Reported by: | dClauzel | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 2.10 |
Component: | module:core | Version: | 2.6.4 |
Severity: | normal | Keywords: | .htaccess |
Cc: |
Description
Dotclear fourni 2 fichiers .htaccess (inc/.htaccess et plugins/.htaccess) qui cassent la configuration d’apache v2.24+, l’empêchant de tourner.
Ils contiennent chacun la directive obsolète « Deny from all » pour les version récentes d’apache, qui demandent la syntaxe « Require all denied ».
Une solution — en attendant que les retardataires mettent à jour leur apache ;) — est de faire un test dans ces .htaccess afin de présenter la directive adaptée.
<IfVersion >= 2.4> Require all denied </IfVersion> <IfVersion < 2.4> Deny from all </IfVersion>
Autrement, pour chaque mise à jour l’administrateur est obligé de restaurer les .htaccess d’origine, de passer la mise à jour, puis de remettre ses .htaccess. Lourd.
Change History
comment:2 Changed 10 years ago by dClauzel
Hummm, mod_version est standard à apache depuis la v2.0.56 (mais dans les extensions, il est vrai).
Par contre, attention : mod_authz_core n’existe que depuis la version 2.23+, donc il faudra qu’un apache v2.22 sache gérer sa non-existence.
Je n’ai pas de vieil apache sous la main pour faire des essais, quelqu’un peut tester les différentes approches pour voir que ça passe bien ?
comment:3 follow-up: ↓ 4 Changed 10 years ago by philippe
Commentaire de néophyte : chez moi en local j'ai un serveur Apache en version 2.4.9 (win64) qui fonctionne apparemment sans problème. L'accès au répertoire dotclear/plugins ou dotclear/inc est bien bloqué par la seule directive Deny from all. C'est normal ?
comment:4 in reply to: ↑ 3 Changed 10 years ago by dClauzel
Replying to philippe:
Commentaire de néophyte : chez moi en local j'ai un serveur Apache en version 2.4.9 (win64) qui fonctionne apparemment sans problème. L'accès au répertoire dotclear/plugins ou dotclear/inc est bien bloqué par la seule directive Deny from all. C'est normal ?
Tu as très probablement le mod_access_compat de chargé, qui ajoute le support des anciennes directives.
La recommandation est de mettre à jour ces directives de contrôle d’accès avec la nouvelle syntaxe, car la rétrocompatibilité ne sera pas éternelle; dans un futur proche, tu ne pourras pas relancer ton serveur après une mise à jour.
comment:5 Changed 10 years ago by philippe
Gagné pour le access_compat_module et merci pour l'explication de texte ;)
comment:6 Changed 10 years ago by vincent
Pour ma part, j'ai un Apache 2.4.4 qui a bien l'extension mod_version mais qui n'est pas activée par défaut.
D'où ma recherche sur la question après avoir tester le code initial.
Sinon on peut essayer de combiner :
<IfModule mod_version> <IfVersion >= 2.4> Require all denied </IfVersion> <IfVersion < 2.4> Deny from all </IfVersion> </IfModule> <IfModule !mod_version> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order Allow,Deny Deny from all </IfModule> </IfModule>
C'est lourd, c'est moche et ça laisse le cas d'apache < 2.23 sans mod_version activé, mais j'vois pas trop comment faire mieux.
comment:7 Changed 8 years ago by franck
Puisqu'il s'agit, a priori, d'interdire l'accès à deux répertoires par vraiment fréquentés habituellement, est-ce qu'un simple
Require all denied Deny from all
Ne suffirait pas ?
Vous pourriez tester ce .htaccess chez vous et me dire avec quelle version d'Apache et si ça gueule ?
comment:8 Changed 8 years ago by franck
En tout cas ça ne casse pas un Apache 2.2, reste à voir avec une version plus récente.
comment:9 Changed 8 years ago by franck <carnet.franck.paul@…>
- Status changed from new to closed
- Resolution set to fixed
(In [31c893d40e5b]) Add Apache 2.4 directive (Require all denied) for private folders, should fixes #1979
Cette solution nécessite le module mod_version qui n'est pas forcément disponible ; j'ai trouvé une solution qui me semble plus portable car elle utilise le core d'apache :
source : http://blog.plee.me/2013/07/access-control-via-hybrid-htaccess-for-both-apache-httpd-2-2-and-2-4/