Diciamo che ci sono molti file html, css, js, img ed ecc all'interno di una directory sul tuo server. Normalmente, qualsiasi utente in internet-land può accedere a questi file semplicemente digitando l'URL completo in questo modo: http://example.com/static-files/sub/index.htmlUtilizzo di PHP/Apache per limitare l'accesso ai file statici (html, css, img, ecc.)
Ora, cosa succede se si desidera che solo gli utenti autorizzati possano caricare tali file? Per questo esempio, diciamo che i tuoi utenti accedono prima da un URL come questo: http://example.com/login.php
Come permetteresti all'utente connesso di visualizzare il file index.html (o qualsiasi file sotto "file statici") , ma limitare il file a tutti gli altri?
Sono venuto su con due possibili soluzioni così lontane:
Soluzione 1
creare il seguente file .htaccess in "static-files":
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC]
E poi nel Autorizza. php ...
if (isLoggedInUser()) readfile('static-files/'.$_REQUEST['file']);
else echo 'denied';
Questo file authorize.php è eccessivamente semplificato, ma si e l'idea.
Soluzione 2
creare il seguente file .htaccess in "static-files":
Order Deny,Allow
Deny from all
Allow from 000.000.000.000
E poi la mia pagina di login potrebbe aggiungere quel file .htaccess con un IP per ogni utente che accede a Ovviamente questo dovrebbe anche avere qualche tipo di routine di pulizia per eliminare gli IP vecchi o non più usati.
Mi preoccupo che la mia prima soluzione possa diventare piuttosto costosa sul server in quanto aumenta il numero di utenti e file a cui stanno accedendo. Penso che la mia seconda soluzione sarebbe molto meno costosa, ma è anche meno sicura a causa dello spoofing IP e così via. Mi preoccupo anche che scrivere questi indirizzi IP sul file htaccess possa diventare un collo di bottiglia dell'applicazione se ci sono molti utenti simultanei.
Quale di queste soluzioni suona meglio e perché? In alternativa, puoi pensare a una soluzione completamente diversa che sarebbe meglio di una di queste?
ne dite di usare Amazon S3 servizio – sonam