HTACCESS: restreindre l’accès à des fichiers

HTACCESS: restreindre l’accès à des fichiers

je souhaiterai que les fichiers .txt soient inaccessibles par les visiteurs mais accessibles par les fichiers php sur le serveur

Voir https://www.commentcamarche.net/cont…hiers-htaccess
avec le passage
Empêcher l’accès à un type de fichiers par un domaine

Code :

<Files *.txt> 
 
Order Deny, Allow 
Deny from .LeNomDuDomaine.com 
</Files>

complément :Empêcher l’accès à un répertoire
Si on souhaite empêcher l’accès au répertoire , tous les fichiers qui s’y trouvent (images, sons, fichiers .html ou .php, etc…) seront inaccessibles mais pas seulement. En effet, les sous-dossiers et leurs fichiers « héritent » de la protection
L’opération consiste à créer un fichier .htaccess dans le ou les répertoires à protéger. Le fichier .htaccess doit contenir les lignes suivantes :

Code :

<LIMIT GET POST>
 
order deny,allow
deny from all
 
</LIMIT>

Un simple deny comme ci-dessous suffit à interdire à quiconque, l’accès aux fichiers .txt par URL (accès direct) mais n’aura aucune influence sur le code php qui pourra toujours accéder aux fichiers puisque l’accès se fait par accès disque (filesystem) et non par URL.

Code :

 
<FilesMatch "\.txt$">
Deny from all
</FilesMatch>

voir là https://www.askapache.com/htaccess/u…s-in-htaccess/

Using FilesMatch and Files in htaccess

traduction

Files et FilesMatch pour cibler plusieurs fichiers et utiliser des expressions régulières à l’aide de fichiers .htaccess sur Apache.

REMARQUE: FilesMatch doit être utilisé à la place de Files pour traiter plusieurs fichiers.

Ajout d’en-têtes de langue de type de contenu UTF-8 et en-US aux fichiers portant les extensions htm, html, css, js et php

Définition du jeu de caractères dans htaccess

Utilisation de la directive sur les fichiers

<Files ~ "\.(htm|html|css|js|php)$">
AddDefaultCharset UTF-8
DefaultLanguage en-US
</Files>

Utilisation de la directive FilesMatch (recommandée)

<FilesMatch "\.(htm|html|css|js|php)$">
AddDefaultCharset UTF-8
DefaultLanguage en-US
</FilesMatch>

Autres exemples utilisant Files et FilesMatch dans htaccess

Cible un seul fichier admin.php

<Files admin.php>
deny from all
</Files>

Fichiers cibles commençant par admin ou staff et se terminant par .php

<FilesMatch "^(admin|staff)\.php$">
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /web/username/.htpasswd
Require valid-user
</FilesMatch>

Ciblez tous les fichiers se terminant par .html ou .htm

<FilesMatch "\.(html|htm)$">
AddDefaultCharset utf-8
DefaultLanguage en-us
</FilesMatch>

Description de la directive <FilesMatch>:

elle contient les directives qui s’appliquent aux noms de fichiers correspondants dans une expression régulière Syntaxe: <regex FilesMatch> … </ FilesMatch> Contexte: configuration du serveur, hôte virtuel, répertoire, .htaccess

La directive <FilesMatch> limite la portée des directives incluses par nom de fichier, comme le fait la directive <Files>. Cependant, elle accepte une expression régulière. Par exemple:

<FilesMatch "\.(gif|jpe?g|png)$">

<Files> Directive Description: contient les directives qui s’appliquent aux noms de fichiers correspondants. Syntaxe: <Files filename> … </ Files>.

La directive <Files> limite la portée des directives incluses par nom de fichier. Elle est comparable aux directives <directory> et <location>. Ele devrait correspondre à une directive </ Files>. Les directives données dans cette section seront appliquées à tout objet dont le nom de base (dernier composant du nom de fichier) correspond au nom de fichier spécifié. Les sections <Fichiers> sont traitées dans l’ordre dans lequel elles apparaissent dans le fichier de configuration, après la lecture des sections <répertoire> et .htaccess, mais avant les sections <emplacement>. Notez que <fichiers> peuvent être imbriqués dans les sections <répertoire> pour limiter la partie du système de fichiers auquel ils s’appliquent.

L’argument du nom de fichier doit inclure un nom de fichier ou une chaîne de caractères génériques, où? correspond à n’importe quel caractère et * correspond à n’importe quelle séquence de caractères. Des expressions régulières étendues peuvent également être utilisées, avec l’ajout du caractère ~. Par exemple:

<Files ~ "\.(gif|jpe?g|png)$">

correspondrait aux formats graphiques Internet les plus courants. <FilesMatch> est toutefois préférable.

Notez que contrairement aux sections <directory> et <location>, les sections <Files> peuvent être utilisées dans des fichiers .htaccess. Cela permet aux utilisateurs de contrôler l’accès à leurs propres fichiers, au niveau des fichiers.

Les sections de configuration sont appliquées dans un ordre très particulier. Comme cela peut avoir des effets importants sur la manière dont les directives de configuration sont interprétées, il est important de comprendre comment cela fonctionne.

L’ordre de fusion est le suivant:

<directory> (sauf les expressions régulières) et .htaccess effectués simultanément (avec .htaccess, si autorisé, écrasant <directory>)

  1. <directoryMatch> (et <directory ~>)
  2. <Files> et <FilesMatch> effectués simultanément
  3. <location> and <locationMatch> done simultaneously

Hormis <directory>, chaque groupe est traité dans l’ordre dans lequel il apparaît dans les fichiers de configuration. <directory> (groupe 1 ci-dessus) est traité dans le composant de répertoire le plus court au plus long.
Ainsi, par exemple,
<directory / var / web / rép> sera traité avant le
<directory / var / web / rép / sousdir>.
Si plusieurs sections <directory> s’appliquent au même répertoire, elles sont traitées dans l’ordre des fichiers de configuration. Les configurations incluses via la directive Include seront traitées comme si elles se trouvaient dans le fichier inclus à l’emplacement de la directive Include.

Les sections à l’intérieur des sections <virtualHost> sont appliquées après les sections correspondantes à l’extérieur de la définition d’hôte virtuel. Cela permet aux hôtes virtuels de remplacer la configuration du serveur principal.

Les sections ultérieures remplacent les précédentes.

Remarque technique: une séquence <location> / <locationMatch> est en cours juste avant la phase de traduction du nom (où Aliases et DocumentRoots sont utilisés pour mapper des URL à des noms de fichiers). Les résultats de cette séquence sont complètement perdus une fois la traduction terminée.