(htaccess) Come prevenire un file da DIRECT URL ACCESS?

Questo è il mio secondo post per lo stesso problema. Il precedente post di Coz aveva bisogno di un altro esempio.

Ok, diciamo ancora, sto usando Apache e ho una cartella web di esempio (sul mio Localhost) come:

  • http: // localhost / test /

Nella cartella, i file saranno:

  • index.html
  • https://stackoverflow.com/questions/10236717/htaccess-how-to-prevent-a-file-from-direct-url-access/sample.jpg
  • .htaccess

“Index.html” includerà semplicemente:

     

Quando eseguo il sito Web all’indirizzo http://localhost/test/ , verrà semplicemente mostrata l’immagine `https://stackoverflow.com/questions/10236717/htaccess-how-to-prevent-a-file-from-direct-url-access/sample.jpg ‘nella pagina.

QUINDI IL PROBLEMA QUI E ‘ :

  • Voglio impedire che l’immagine venga visualizzata come http://localhost/test/https://stackoverflow.com/questions/10236717/htaccess-how-to-prevent-a-file-from-direct-url-access/sample.jpg direttamente nella barra degli indirizzi.

Nota:
Dopo un giorno di ottenere risposte inferiori, ho trovato che tutte le soluzioni funzionano logicamente, ma il problema con Firefox. Voglio dire, le risposte sottostanti stanno dando la soluzione durante il test su ogni browser ma non con Firefox.

Prova quanto segue:

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] RewriteRule \.(gif|jpg)$ - [F] 

Restituisce 403, se si accede direttamente alle immagini, ma consente loro di essere visualizzate sul sito.

Nota: è ansible che quando apri una pagina con un’immagine e poi copi il percorso di quell’immagine nella barra degli indirizzi puoi vedere quell’immagine, è solo a causa della cache del browser, infatti quell’immagine non è stata caricata dal server ( da Davo, commento completo qui sotto) .

la regola di rosipov funziona alla grande!

Lo uso su siti live per visualizzare un messaggio vuoto o speciale;) al posto di un tentativo di accesso diretto ai file, preferisco proteggere un po ‘dalla vista diretta. Penso che sia più divertente di un 403 Proibito.

Quindi, prendendo la regola di rosipov per redirect qualsiasi richiesta diretta ai file {gif, jpg, js, txt} a ‘messageforcurious’:

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC] RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L] 

Lo vedo come un modo educato per impedire l’accesso diretto a, ad esempio, a file sensibili CMS come xml, javascript … con sicurezza in mente: a tutti questi robot che scarabocchiano il web oggigiorno, mi chiedo che cosa farà il loro algo dal mio ‘ messageforcurious’.

Sulla base dei tuoi commenti sembra che questo è quello che ti serve:

 RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC] RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC] 

L’ho provato sul mio localhost e sembra funzionare bene.

Prima di tutto, trova dove si trova il file di configurazione principale di httpd.conf di apache. Se usi Debian, dovrebbe essere qui: /etc/apache/httpd.conf . Usando qualche editor di file come Vim o Nano, apri questo file e trova la riga che appare come segue:

 Options Includes Indexes FollowSymLinks MultiViews 

quindi rimuovere la parola Indexes e salvare il file. La linea dovrebbe assomigliare a questa:

 Options Includes FollowSymLinks MultiViews 

Dopo averlo fatto, riavvia apache (es. /Etc/init.d/apache restart in Debian). Questo è tutto!