Maison  >  Article  >  développement back-end  >  Comment restreindre l'accès direct aux fichiers non-Index.php sur les serveurs Apache ?

Comment restreindre l'accès direct aux fichiers non-Index.php sur les serveurs Apache ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 02:23:29973parcourir

How to Restrict Direct Access to Non-Index.php Files on Apache Servers?

Contrôle de l'accès direct aux fichiers non-Index.php

Arrière-plan :

Pour améliorer Pour des raisons de sécurité, il peut être souhaitable d'empêcher l'accès direct à tous les fichiers PHP d'un dossier, à l'exception du fichier index.php. Cela protège les données sensibles d'un accès direct et garantit que des pages spécifiques sont accessibles uniquement via des canaux autorisés.

Solution :

Les serveurs Web Apache fournissent un mécanisme pour contrôler l'accès aux fichiers. en fonction de leur extension. En tirant parti du fichier .htaccess, il est possible de refuser l'accès direct à tous les fichiers PHP sauf index.php.

Étapes :

  1. Vérifier Mod_access : Assurez-vous que mod_access est activé dans la configuration Apache.
  2. Créez un fichier .htaccess : Créez un fichier .htaccess dans le répertoire où résident les fichiers .php.
  3. Ajouter un contrôle d'accès :Ajoutez le code suivant au fichier .htaccess :
Order Deny,Allow
Deny from all
Allow from 127.0.0.1

<Files /index.php>
    Order Allow,Deny
    Allow from all
</Files>

Explication :

Le La première directive refuse l'accès à tous les fichiers à l'exception de index.php à partir de toutes les adresses IP. La deuxième directive autorise spécifiquement l'accès à index.php à partir de toutes les adresses IP.

Considérations supplémentaires :

  • Pour autoriser l'accès à d'autres types de fichiers, utilisez le < ;FilesMatch> directif. Par exemple, pour autoriser l'accès aux fichiers CSS et JS, ajoutez le code suivant :
<FilesMatch ".*\.(css|js)$">
    Order Allow,Deny
    Allow from all
</FilesMatch>
  • Évitez d'utiliser l'option ou directives dans les fichiers .htaccess pour Apache 2.4 ou version ultérieure.

Mise à jour pour Apache 2.4 :

Dans Apache 2.4, la syntaxe du contrôle d'accès a changé. La syntaxe correcte pour cette solution est :

Order deny,allow
Deny from all
Require all granted

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn