Disons que vous avez beaucoup de html, css, js, img etc fichiers dans un répertoire sur votre serveur. Normalement, n'importe quel utilisateur dans internet-terre pourrait accéder à ces fichiers en tapant simplement l'URL complet de la sorte: http://example.com/static-files/sub/index.html
Maintenant, si vous voulez seulement les utilisateurs autorisés à être en mesure de charger ces fichiers? Pour cet exemple, disons que votre utilisateur se connecte d'abord à partir d'une URL comme ceci: http://example.com/login.php
Comment voulez-vous permettre à l'utilisateur connecté à la vue de la index.html fichier (ou les fichiers sous "statique-files"), mais limiter le fichier à tout le monde?
Je suis venu avec deux solutions possibles à ce jour:
Solution 1
Créer les suivants .fichier htaccess sous "statique-files":
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC]
Et puis dans authorize.php...
if (isLoggedInUser()) readfile('static-files/'.$_REQUEST['file']);
else echo 'denied';
Cette authorize.php fichier est grossièrement simplifiée, mais vous obtenez l'idée.
Solution 2
Créer les suivants .fichier htaccess sous "statique-files":
Order Deny,Allow
Deny from all
Allow from 000.000.000.000
Et puis, ma page de connexion pourrait ajouter que .fichier htaccess avec une adresse IP pour chaque utilisateur qui se connecte. Évidemment, cela aurait également besoin d'avoir une sorte de routine de nettoyage pour purger vieux ou n'est plus utilisé IPs.
J'ai peur que ma première solution pourrait être assez cher, sur le serveur que le nombre d'utilisateurs et les fichiers qu'ils accèdent à des augmentations. Je pense que mon deuxième solution serait beaucoup moins cher, mais il est aussi de moins en moins en sécurité en raison de l'usurpation d'adresse IP et etc. J'ai peur que l'écriture de ces adresses IP pour le fichier htaccess peut devenir un goulot d'étranglement de l'application si il y a de nombreux simultanée utilisateurs.
Laquelle de ces solutions sonne mieux, et pourquoi? Sinon, pouvez-vous penser à une solution complètement différente que ce serait mieux que l'autre de ces?