Der Schutz von HTML-Dateien mit .htaccess
Frage
Meine PHP-Anwendung verwendet 404 Dokumente HTML-Dateien zu erzeugen, so dass mehrere Abfragen auf die gleiche HTML-Datei nur die Erzeugung verursachen einmal ausführen.
Ich möchte Anfragen an die HTML-Dateien abzufangen, so dass der Benutzer eine etablierte PHP Session, um die Dateien zu ziehen haben muss.
Im besten Fall Sitzungs-ID würde in der URL verwendet werden, und zwingt sie als weitere Authentifizierung verwendet werden könnten. Um zum Beispiel eine SessionID und machen nur bestimmte HTML-Dateien zugänglich würden Sie ausgeben Sie sich anzumelden.
Ich bin mir bewusst, dass meine Cookies durch Änderung ich einen Antrag fälschen könnte, aber das ist in Ordnung.
Wie würde ich mich über das Tun dies?
Lösung
So etwas wie dies funktionieren könnte (ich habe es nicht getestet):
RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html
Es wird davon ausgegangen, dass Sie "-$session_id.html"
auf Dateinamen ($session_id
ist die PHP-Session-ID).
Es sollte sicher sein, und der Vorteil ist, dass Dateien, die vom Web-Server ohne Aufruf an all PHP direkt bedient werden.
Andere Tipps
SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>
Natürlich Benutzer kann manuell solche Cookies in seinem Browser erstellen (es gibt Erweiterungen, die für Firefox tun, und Sie können Ihren Browser-Cookie-Speicher immer bearbeiten).
Sie könnten die Apache Modul mod_rewrite Anfragen umleiten von .html
URLs an einen PHP-Skript:
RewriteEngine on
RewriteRule \.html$ script.php [L]
Der angeforderte URI-Pfad und Abfrage ist dann in der $_SERVER['REQUEST_URI']
Variable.
Setzen Sie Dateien zwischengespeichert aus Ihrem Web-Root, aber immer noch in einem Ort, wo PHP auf sie zugreifen kann.