Protéger les fichiers HTML avec .htaccess
Question
Mon application PHP utilise 404 documents pour générer des fichiers HTML, de sorte que plusieurs requêtes sur le même fichier HTML entraînent l'exécution unique de la génération.
J'aimerais intercepter les requêtes sur les fichiers HTML afin que l'utilisateur ait besoin d'une session PHP établie pour pouvoir accéder aux fichiers.
Dans le meilleur des cas, l'ID de SESSION serait utilisé dans l'URL et forcé, il pourrait servir d'authentification supplémentaire. Par exemple, vous connecter vous émettrait un identifiant de session et ne rendrait accessible que certains fichiers HTML.
Je suis conscient qu'en modifiant mes cookies, je pouvais usurper une requête, mais c'est correct.
Comment pourrais-je m'y prendre?
La solution
Quelque chose comme ça pourrait marcher (je ne l’ai pas testé):
RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html
Cela suppose que vous ajoutiez " - $ session_id.html & <; code> aux noms de fichiers (
$ session_id
est l'identifiant de session de PHP).
Cela devrait être sûr, et l’avantage est que les fichiers sont directement servis par le serveur Web sans invoquer PHP.
Autres conseils
SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>
Bien sûr, l'utilisateur peut créer manuellement ce type de cookie dans son navigateur (certaines extensions le font pour Firefox et vous pouvez toujours modifier le magasin de cookies de votre navigateur).
Vous pouvez utiliser le module Apache mod_rewrite pour rediriger les demandes de .html
URL vers un script PHP:
RewriteEngine on
RewriteRule \.html$ script.php [L]
Le chemin et la requête d'URI demandés sont alors disponibles dans la variable $ _ SERVER ['REQUEST_URI']
.
Mettez les fichiers en cache hors de votre racine Web, mais dans un endroit où PHP peut y accéder.