Comment refuser l'accès à un fichier dans.htaccess

J'ai ce qui suit .fichier htaccess:

RewriteEngine On
RewriteBase /

# Protect the htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

# Protect log.txt
<Files ./inscription/log.txt>
Order Allow,Deny
Deny from all
</Files>

# Disable directory browsing
Options All -Indexes

J'essaie d'interdire aux visiteurs d'accéder au fichier suivant:

domain.com/inscription/log.txt

Mais ce que j'ai ci-dessus ne fonctionne pas: je peux toujours accéder au fichier à partir du navigateur à distance.

85
demandé sur davidkonrad 2012-07-31 00:21:29

5 réponses

Dans un fichier htaccess, la portée de la directive <Files> ne s'applique qu'à ce répertoire (Je suppose que pour éviter toute confusion lorsque les règles / directives dans le htaccess des sous-répertoires sont appliquées en remplaçant celles du parent).

Donc vous pouvez avoir:

<Files "log.txt">
Order Allow,Deny
Deny from all
</Files>

Dans un fichier htaccess dans votre inscription répertoire. Ou vous pouvez utiliser mod_rewrite pour gérer les deux cas refuser l'accès au fichier htaccess ainsi qu'au journal.txt:

RewriteRule /?\.htaccess$ - [F,L]

RewriteRule ^/?inscription/log\.txt$ - [F,L]
151
répondu Jon Lin 2012-07-30 21:18:18

Forte de correspondance au modèle - C'est la méthode que j'utilise ici de Presse Périssables. En utilisant une forte correspondance de motifs, cette technique empêche l'accès externe à tout fichier contenant " .hta", ".HTA ", ou toute combinaison insensible à la casse de ceux-ci. Pour illustrer, ce code empêchera l'accès par l'un des moyens suivants demandes:

  • .htaccess
  • .HTACCESS
  • .hTaCcEsS
  • testFILE.htaccess
  • Nom du fichier.HTACCESS
  • FILEROOT.hTaCcEsS

..etc., etc. De toute évidence, cette méthode est très efficace pour sécuriser les fichiers HTAccess de votre site. De plus, cette technique inclut également la directive fortifiante "Satisfy All ". Notez que ce code doit être placé dans le fichier htaccess racine de votre domaine:

# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
14
répondu Yaşar Xavan 2014-03-07 13:38:32

Je ne crois pas que la réponse actuellement acceptée soit correcte. Par exemple, j'ai le fichier .htaccess suivant à la racine d'un serveur virtuel (apache 2.4):

<Files "reminder.php">
require all denied
require host localhost
require ip 127.0.0.1
require ip xxx.yyy.zzz.aaa
</Files>

Cela empêche l'accès externe à reminder.php qui se trouve dans un sous-répertoire. J'ai un fichier .htaccess similaire sur mon serveur Apache 2.2 avec le même effet:

<Files "reminder.php">
        Order Deny,Allow
        Deny from all
        Allow from localhost
        Allow from 127.0.0.1
     Allow from xxx.yyy.zzz.aaa
</Files>

Je ne sais pas avec certitude mais je soupçonne que c'est la tentative de définir le sous-répertoire spécifiquement dans le fichier .htaccess, à savoir <Files ./inscription/log.txt> ce qui le cause échouer. Il serait plus simple de placer le fichier .htaccess dans le même répertoire que log.txt c'est-à-dire dans le répertoire inscription et cela fonctionnera là.

10
répondu Nik Dow 2017-01-31 20:27:48

Placez la ligne ci-dessous dans votre .fichier htaccess et remplacez le nom du fichier comme vous le souhaitez

RewriteRule ^(test\.php) - [F,L,NC]
1
répondu Rakesh Dongarwar 2017-08-29 18:57:15

Eh bien, vous pouvez utiliser la balise <Directory> par exemple:

<Directory /inscription>
  <Files log.txt>
    Order allow,deny
    Deny from all
  </Files>
</Directory>

N'utilisez pas ./ car si vous utilisez simplement / Il regarde le répertoire racine de votre site.

Pour un exemple plus détaillé visite http://httpd.apache.org/docs/2.2/sections.html

-4
répondu Nicholas English 2017-01-25 02:55:43