web-dev-qa-db-fra.com

Refuser l'accès à un dossier spécifique dans .htaccess

J'essaie d'empêcher les utilisateurs d'accéder au dossier site/includes en manipulant l'URL.

Je ne sais pas si je dois tout refuser et faire manuellement des exceptions individuelles pour permettre, si je peux simplement refuser ce dossier, ou s'il existe une fonction de réécriture qui peut être utilisée.

Exemple spécifique: je ne veux pas voir les fichiers de répertoire en tapant localhost/site/includes dans l'URL.

108
Zach

Créez le fichier site/includes/.htaccess et ajoutez cette ligne:

Deny from all
166
anubhava

Dans un fichier .htaccess, vous devez utiliser

Deny from  all

Mettez ceci dans site/includes/.htaccess pour le rendre spécifique au répertoire includes

Si vous souhaitez uniquement interdire la liste des fichiers de répertoire, vous pouvez utiliser

Options -Indexes 
35
Andy

Vous pouvez également refuser l'accès à un dossier à l'aide de RedirectMatch

Ajouter la ligne suivante à htaccess

RedirectMatch 403 ^/folder/?$

Cela renverra une erreur 403 forbidden pour le dossier, par exemple: http://example.com/folder/, mais bloquera l'accès aux fichiers et dossiers de ce dossier. Si vous souhaitez bloquer tout le contenu du dossier, modifiez simplement le motif regex en ^/folder/.*$.

Une autre option est mod-rewrite Si url-rewrting-module est activé, vous pouvez utiliser quelque chose comme ceci dans root/.htaccss:

RewriteEngine on

RewriteRule ^folder/?$ - [F,L]

Ceci mappera en interne une demande pour la page d'erreur folder à forbidden.

33
starkeen

Nous allons définir le répertoire pour qu'il soit très sécurisé, en refusant l'accès à tous les types de fichiers. Vous trouverez ci-dessous le code que vous souhaitez insérer dans le fichier .htaccess.

Order Allow,Deny 
Deny from all 

Depuis que nous avons défini la sécurité, nous souhaitons maintenant autoriser l'accès à nos types de fichiers souhaités. Pour ce faire, ajoutez le code ci-dessous au fichier .htaccess sous le code de sécurité que vous venez d'insérer.

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

votre fichier final .htaccess ressemblera

Order Allow,Deny 
Deny from all 

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

Source from Autoriser l'accès à des types de fichiers spécifiques dans un répertoire protégé

13
arthankamal

Vous pouvez créer un fichier .htaccess pour le dossier, qui aurait dû refuser l’accès avec

Deny from  all

ou vous pouvez rediriger vers une page 404 personnalisée

Redirect /includes/ 404.html
8
Marvin

Vous pouvez également mettre ce IndexIgnore * à votre fichier .htaccess racine pour désactiver la liste des fichiers de tous les répertoires de votre site Web, y compris le sous-répertoire.

4
ravisoni

Il suffit de mettre .htaccess dans le dossier que vous souhaitez restreindre

## no access to this folder

# Apache 2.4
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</IfModule>

Source: MantisBT sources.

3
The Godfather

Création de index.php, index.html, index.htm n’est pas sécurisé. Parce que, n'importe qui peut avoir accès à vos fichiers dans le répertoire spécifié en devinant le nom du fichier. Exemple: http://votresite.com/includes/fichier.dat Ainsi, la méthode recommandée consiste à créer un fichier .htaccess pour refuser tous les visiteurs;). S'amuser !!

2
Meraj

Vous pouvez le faire dynamiquement de cette façon:

mkdir($dirname);
@touch($dirname . "/.htaccess");
  $f = fopen($dirname . "/.htaccess", "w");
  fwrite($f, "deny from all");
fclose($f);
2
MSTRmt