HTML-lêers te beskerm met htaccess
Vra
My PHP app gebruik 404 Dokumente om HTML-lêers te genereer sodat verskeie navrae aan dieselfde HTML-lêer net die geslag laat keer hardloop.
Ek wil graag versoeke om die HTML-lêers te onderskep sodat die gebruiker nodig het om 'n gevestigde PHP Sessie moet word ten einde die lêers trek.
In die beste geval, sessie-ID gebruik sou word in die URL en dwing dit gebruik kan word as 'n verdere verifikasie. Byvoorbeeld, meld in sou jy reik 'n sessie-en maak net sekere HTML-lêers toeganklik vir jou.
Ek is bewus daarvan dat deur die verandering van my koekies ek kon 'n versoek spoof, maar dit is goed.
Hoe sou ek gaan om dit te doen?
Oplossing
Iets soos hierdie kan werk (ek het dit nie getoets):
RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html
Dit veronderstel dat jy voeg "-$session_id.html"
om lêername ($session_id
is PHP se sessie ID).
Dit moet veilig wees, en die voordeel is dat lêers word bedien deur die webbediener direk sonder beroep PHP at all.
Ander wenke
SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>
Natuurlik gebruiker kan met die hand soos koekie te skep in sy leser (daar is uitbreidings wat doen wat vir Firefox, en jy kan altyd jou blaaier se koekie winkel wysig).
Jy kan gebruik maak van die Apache module mod_rewrite op versoeke van herlei .html
URLs om 'n PHP script:
RewriteEngine on
RewriteRule \.html$ script.php [L]
Die versoek URI pad en navraag is dan beskikbaar in die $_SERVER['REQUEST_URI']
veranderlike.
Sit jy die kas lêers uit jou web wortel, maar nog steeds in 'n plek waar PHP hulle kan toegang.