Voici le scénario:
- Il y a un
index.php
fichier dans le dossier racine - certains fichiers sont inclus dans
index.php
lesquels se trouvent dans leincludes
dossier. - 1 autre fichier (
submit.php
) se trouve dans le dossier racine pour l'action d'envoi de formulaire.
Je souhaite restreindre l'accès utilisateur direct aux fichiers du includes
dossier par htaccess. aussi pour submit.php
. Mais inclure fonctionnera pour le index.php
fichier. Comme, si l'utilisateur tape www.domain.com/includes/somepage.php
, il le restreindra (peut être redirigé vers une page d'erreur).
C'est une
mod_rewrite
solution basée pure :Cela affichera une erreur interdite à utiliser si l'URI contient soit
/includes/
ou/submit.php
la source
Il est possible d'utiliser une directive Files et d'interdire l'accès à tous les fichiers, puis de l'utiliser à nouveau pour définir les fichiers accessibles:
la source
1 solution basée sur mod_alias de doublure:
Cela affichera une erreur interdite pour /folder/file.php
la source
^folder
.Si je comprends bien, vous souhaitez simplement refuser l'accès au dossier inclus?
Un .htaccess avec une directive «DENY FROM ALL» placée dans le dossier includes ferait l'affaire.
la source
Votre Q se compose de deux parties, les solutions de jeroen et anubhava fonctionnent pour la partie I - refuser l'accès à / comprend. anubhava fonctionne également pour la partie II. Je préfère ce dernier parce que j'utilise un de
DOCROOT/.htaccess
toute façon et cela garde tout ce contrôle dans un seul fichier.Cependant, ce que je voulais discuter est le concept de "refuser l'accès à
submit.php
". Si vous ne voulez pas l'utiliser,submit.php
pourquoi l'avoir dans DOCROOT? Je soupçonne que la réponse ici est que vous l'utilisez comme cible d'action dans certaines formes et que vous ne voulez qu'il soit déclenché lorsque le formulaire est soumis et non directement, par exemple à partir d'un spambot.Si cela est vrai, vous ne pouvez pas utiliser la partie II d'anubhava car cela entraînera l'échec de votre formulaire. Ce que vous pouvez faire ici est (i) avec le
.htaccess
chèque pour vous assurer que le référent était votre propre page d'index:Et (ii) dans votre générateur de formulaire PHP index.php, incluez des champs cachés pour un horodatage et une validation. La validation pourrait être, par exemple, les 10 premiers caractères d'un MD5 de l'horodatage et un secret interne. Lors du traitement de la soumission, vous pouvez alors (i) valider que l'horodatage et la validation correspondent, et (ii) l'horodatage se situe à moins de, par exemple, 15 minutes de l'heure actuelle.
Cela vous permet d'éviter le spam, car le seul moyen pratique pour un spammeur d'obtenir une paire horodatage / validation valide serait d'analyser un formulaire, mais cette gratte n'aurait qu'une durée de vie de 15 minutes.
la source
En fonction des autres options possibles définies à un niveau supérieur, vous devrez peut-être mettre les éléments suivants dans votre fichier .htaccess dans votre répertoire includes:
Je suis tombé sur ceci lorsque le répertoire supérieur a défini l'authentification de base, y compris la ligne:
Cela empêchait mon refus de tous de prendre effet car les utilisateurs étaient authentifiés.
la source
Vous pouvez ajouter la commande ci-dessous au
.htaccess
fichierIl affichera le message "rien n'est ici" en cas d'accès non autorisé.
Si vous souhaitez rediriger par un code d'erreur vers une certaine page, vous pouvez définir une commande comme suit:
Il redirigera vers
/errors/404.html
et affichera la page personnalisée introuvable.la source