Aller au contenu
Zolo

Comment mettre en place une restriction d'acès via htpasswd

Recommended Posts

Bonjour à tous,

Je suis en hébergement mutualisé. Je cherche à restreindre l'accès à un site web ou à des sous-répertoires d'un site (sa partie administration typiquement, comme wp-admin pour un site wordpress).

Dans ce but je souhaite mettre en place une sécurité via des fichiers .htaccess et .htpasswd.

J'ai appliqué ce tuto : https://www.system-linux.eu/index.php?post/2009/04/23/Mettre-en-place-un-htaccess-avec-htpasswd.

J'ai créé mes deux fichiers en local. Puis je les ai transférés par FTP :

  • le fichier .htaccess dans le répertoire /var/www/mondomaine.fr/htdocs pour restreindre l'accès au site entier (ou dans un sous-répertoire pour restreindre l'accès uniquement à celui-ci)
  • le fichier .htpasswd dans le répertoire /var/www/mondomaine.fr (afin que ce fichier ne soit pas accessible depuis le web).

Le fichier .htaccess contient donc ceci :

AuthUserFile /var/www/mondomaine.fr/.htpasswd
AuthGroupFile /dev/null
AuthName "Accès restreint"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

Sauf que le résultat est une jolie page erreur 500 Internal Server Error… ¬¬

Le tuto précise que le module Apache mod_authz_user doit être chargé. Est-ce le cas ? J'ai tenté de le savoir grâce à un script phpinfo() mais ça ne m'a rien appris. Je ne sais pas si ça veux dire que le module n'est pas chargé ou si l'info est indispo pour des raisons de sécurité.

Est-ce qu'un tel système de sécurisation htpasswd est possible sur cet hébergement ? Si oui, y a-t-il quelque chose à faire que je loupe dans ma config ? Et si non, quelqu'un connaît-il un moyen alternatif mais aussi sécurisé ?

Merci par avance à ceux qui pourront m'aider.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Apache mod_authz_user est un module Apache, pas PHP il est donc normal que un phpinfo() ne donne pas cette information.

Ce qui pose souci dans votre cas c'est le chemin : 

AuthUserFile /var/www/mondomaine.fr/.htpasswd

Il faut regarder sur votre hébergement dans iWal, mais le chemin de votre hébergement est du genre : 

/datas/vol3/yulpa123456/var/www/site/point_de_montage

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour votre réponse.

Concernant mon souci, j'avais regardé dans iWal le chemin dans la navigation FTP où ça ne remonte que jusqu'à /var. En allant dans Publication Web > Domaines Web > mondomaine, j'ai effectivement trouvé le chemin complet. En modifiant mon .htaccess avec cette info tout marche impec :).

Pour phpinfo(), sur mon propre ordi cette fonction me donne aussi les modules apache actifs. Comment faut-il procéder sur l'hébergement Yulpa si besoin ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, Zolo a dit :

<Limit GET POST>
require valid-user
</Limit>

Ne JAMAIS mettre un code pareil dans son .htaccess, c'est une grosse faille de sécurité :(

Cela se traduit par : si la méthode est GET ou POST, on vérifie l'utilisateur. Sinon (PUT, DELETE), on ne vérifie pas !

Avec ça, il y a donc moyen de quand même accéder aux fichiers censés être protégés.

il y a 6 minutes, Alex a dit :

As tu essayé:


<?php
print_r(apache_get_modules());
?>

Cela ne fonctionnera pas :) apache_get_modules() n'est disponible en PHP DSO (module Apache).

Je n'ai pas connaissance d'un moyen de récupérer la liste des modules Apache via PHP FastCGI.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 11 minutes, Alex a dit :

As-tu essayé:


<?php
print_r(apache_get_modules());
?>

Oui et autant ça marche en local chez moi, sur l'hébergement Yulpa par contre ça me fait une Fatal error: Uncaught Error: Call to undefined function apache_get_modules()

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 14 minutes, Simon DUJANCOURT a dit :

Ne JAMAIS mettre un code pareil dans son .htaccess, c'est une grosse faille de sécurité :(

Cela se traduit par : si la méthode est GET ou POST, on vérifie l'utilisateur. Sinon (PUT, DELETE), on ne vérifie pas !

Avec ça, il y a donc moyen de quand même accéder aux fichiers censés être protégés.

Oups :$

Est-ce que je comprends bien ? En ne mettant pas

<Limit GET POST>
require valid-user
</Limit>

mais juste

require valid-user

ça devrait s'appliquer dans tous les cas ?

il y a 14 minutes, Simon DUJANCOURT a dit :

Cela ne fonctionnera pas :) apache_get_modules() n'est disponible en PHP DSO (module Apache).

Je n'ai pas connaissance d'un moyen de récupérer la liste des modules Apache via PHP FastCGI.

Je comprends mieux.

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 3 minutes, Zolo a dit :

Est-ce que je comprends bien ? En ne mettant pas


<Limit GET POST>
require valid-user
</Limit>

mais juste


require valid-user

ça devrait s'appliquer dans tous les cas ?

Exact :) <Limit> sert à limiter des options à certaines méthodes HTTP, d'où l'avertissement dans la documentation d'Apache :

Citation

Dans le cas général, les directives de contrôle d'accès n'ont pas à être placées dans une section <Limit>.

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 1 heure, Simon DUJANCOURT a dit :

Exact :) <Limit> sert à limiter des options à certaines méthodes HTTP, d'où l'avertissement dans la documentation d'Apache :

Citation

Dans le cas général, les directives de contrôle d'accès n'ont pas à être placées dans une section <Limit>.

Merci :)

Bonne soirée

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


×