Votre question se divise en deux parties, les solutions de jeroen et d'anubhava fonctionnent pour la partie I -- refuser l'accès à /includes. Celle d'anubhava fonctionne également pour la partie II. Je préfère la dernière solution parce que j'utilise un DOCROOT/.htaccess
de toute façon et cela permet de garder tous ces contrôles dans un seul fichier.
Cependant, ce dont je voulais discuter, c'est du concept de "refus d'accès à l'information". submit.php
". Si vous ne voulez pas utiliser submit.php
alors pourquoi l'avoir dans DOCROOT ? Je soupçonne que la réponse est que vous l'utilisez comme cible d'action dans certains formulaires et que vous voulez qu'il soit activé uniquement lorsque le formulaire est soumis et non directement, par exemple par un spambot.
Si c'est le cas, vous ne pouvez pas utiliser la partie II d'Anubhava, car votre formulaire échouera. Ce que vous pouvez faire ici, c'est (i) avec l'option .htaccess
pour s'assurer que le référent était votre propre page d'index :
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
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 l'envoi, vous pouvez alors (i) vérifier que l'horodatage et la validation correspondent, et (ii) que l'horodatage se situe dans une fourchette de 15 minutes par rapport à l'heure actuelle.
Cela permet d'éviter le spamming, car le seul moyen pratique pour un spammer d'obtenir un couple valide d'horodatage et de validation serait d'analyser un formulaire, mais ce scrape n'aurait qu'une durée de vie de 15 minutes.