Domanda

Ho bisogno del modo migliore per impedire qualsiasi accesso ai file doc quando non si tratta della mia applicazione web, ad esempio, ho bisogno che alcuni file siano nascosti dai motori di ricerca o dagli utenti pubblici e solo gli utenti privati ​​possano raggiungerli e scaricarli.

Vorrei salvare i file nel file system e non nel DB per non aumentare l'utilizzo del DB.

È stato utile?

Soluzione

Puoi archiviare i tuoi file nel file system, in una directory a cui non è possibile accedere tramite un URL (come una sorella della directory web root).Ciò impedirà l'accesso diretto.

Quindi, scrivi uno script PHP che, quando interrogato per un determinato file, controllerà se l'utente può accedere a quel file e lo invierà con readfile (insieme a header per il tipo di contenuto e la disposizione del contenuto).

Altri suggerimenti

Quando dici solo "utenti privati", presumo che ciò significhi che questi utenti sono autenticati in qualche modo.Potresti archiviare questi file al di fuori della directory web e poi servirli tramite PHP/Perl/Your_Favorite_Programming_lingual.

Un collegamento potrebbe portare a uno script che controlla se l'utente è autenticato e, in tal caso, fornisce il file tramite lo script.

In php, dopo aver autenticato l'utente, potresti usare:

header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('/full/path/to/your/files/movie.mpg');

Ricorda solo di creare quella directory all'esterno della tua webroot e di impostare le autorizzazioni sullo stesso utente con cui vengono eseguiti i tuoi script (nessuno, generalmente sotto apache).

Robots.txt è un modo per bloccare/consentire determinati user agent HTTP.Non è il modo più sicuro però.Puoi utilizzare l'autenticazione di base per consentire l'accesso alla tua app Web.

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