Come è possibile impedire la navigazione diretta a un'immagine in una directory Web?

StackOverflow https://stackoverflow.com/questions/608111

  •  03-07-2019
  •  | 
  •  

Domanda

Sto creando un sito della galleria di immagini a cui devi accedere per accedere. Il sito utilizzerà sessioni per tenere traccia di nomi utente e password. Gli utenti che hanno effettuato l'accesso potranno cercare immagini e vedere i risultati. Presumibilmente, questo significa che inserirò le immagini in una directory web. Come posso impedire alle persone che non hanno effettuato l'accesso di accedere direttamente a un'immagine in questa directory?

Questo è basato su PHP, con MySQL.

È stato utile?

Soluzione

Verifica l'intestazione di un referrer e richiedi che provenga dal tuo sito. Puoi anche verificare che i cookie ti vengano inviati (che sono connessi).

La tua scommessa migliore è quindi fare in modo che PHP recuperi le immagini da una posizione esterna alla tua directory web.

Controlla anche la stringa di commento: usando mod_rewrite puoi fare tutto questo direttamente da apache.

Altri suggerimenti

Metti le immagini in una cartella che non è accessibile tramite un URL diretto e fai in modo che il programma serva l'immagine direttamente

Non mettere le immagini in una directory sfogliabile. Meglio ancora, conservali al di fuori del tuo webroot. Metti in atto una sorta di gestore personalizzato che caricherà l'immagine richiesta e la rispedirà all'utente, dopo che l'utente è stato convalidato e verificato. Ciò impedirà anche il collegamento a caldo delle tue immagini.

Metti le immagini in una cartella fuori dal sito web e usa una pagina proxy per inviare l'immagine al browser. Crea una pagina che usi come url nel tuo tag img, qualcosa del tipo:

getimage.php? Id = 8783475

Nella pagina si controlla che l'utente abbia effettuato l'accesso e si determina dai parametri quale immagine inviare. Imposta il tipo di contenuto della pagina sul tipo corrispondente all'immagine, ad esempio "image / jpeg", leggi il file immagine e invia direttamente al flusso di risposta.

Se le tue immagini non sono troppo grandi, esiste un modo molto intelligente per proteggerle da accessi non autorizzati. È possibile base64 econding, lo stesso della codifica degli allegati di Outlook Express e inserire il codice in una pagina ASP che utilizza l'oggetto SESSION. VEDI TUTORIAL SU ASP PER MAGGIORI INFORMAZIONI SU QUESTO SOGGETTO. Quando un utente accede alla pagina, il codice asp verifica se l'utente è autorizzato. Se non è lo script, interrompe il codice della pagina, non visualizzando l'immagine. Se l'utente è autenticato, gli script caricano l'intera pagina e la base64 viene ricostruita in un'immagine visibile. Il trucco qui è che non hai una directory con immagini semplici, ma l'immagine è codificata nella pagina html, quindi è ricostruita al volo dallo script. Dal momento che non hai immagini nella directory, nessuno può tentare di puntare il browser direttamente su di esse, dal momento che semplicemente non esistono. Puoi utilizzare questo sito per codificare le immagini:

http://www.motobit.com/util/base64-decoder- encoder.asp

Quindi devi " chiamare " l'immagine nel codice html usando questo tag:

img src = " data: image / gif; base64, .................................. ............ (qui inserisci il codice ottenuto dal sito sopra) ...............

Hai finito! Le tue immagini non sono accessibili se l'utente non ha effettuato l'accesso.

Non consentire alle persone di accedere direttamente alle directory delle immagini.

Consenti al software della tua galleria di immagini di inoltrare l'immagine all'utente. Controlla le credenziali necessarie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top