[TUTORIAL] Impedire download diretto di file
Molti di voi nel caso abbiate uno o più siti web avrete sicuramente problemi legati al furto di banda, ovvero download diretto di file senza passare per le proprie pagine. Il seguente script serve appunto per impedirlo a meno che non si passi per la pagina web.
Linguaggio: ASP
Limiti: Causa bug di IIS si può utilizzare con file la cui lunghezza sia inferiore a 6 Mb, a dimensioni maggiori le prestazioni decadono esponenzialmente bloccando il server
Preparazione: la cartella in cui risiederanno i file deve avere disabilitati i permessi di lettura (modifica da effettuare tramite server).
Cosa fa questo codice? Semplice ed ingegnoso: con la modifica alla cartella in cui risiedono i file, questa è diventata invisibile al browser: provando un download diretto avrete perciò un errore. Come si comporta lo script? Tramite asp copia il file in una directory temporanea, fa partire il download (non permettendo nel caso di file PDF o DOC di aprirlo nel browser) e cancellando successivamente il file temporaneo.
Questo il codice:
Codice:
<%
download = "file.zip"
Set fsoMyFile = CreateObject("Scripting.FileSystemObject")
fsoMyFile.CopyFile Server.MapPath("download/"&download&""), _
Server.MapPath("temp/"&download&""), True
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 'adTypeBinary
objStream.Open
strFileName = "temp/"&download&""
objStream.LoadFromFile Server.MapPath(strFileName)
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
Response.ContentType = "application/octet-stream"
Response.BinaryWrite objStream.Read
fsoMyFile.DeleteFile Server.MapPath("temp/"&download&"")
objStream.Close
Set objStream = Nothing
end if
%>
Ovviamente il file "download" può anche essere dinamco ed estratto dal database con un download = rs("nome_file"), staalla vostra fantasia. In questo caso i file risiedono nella cartella Download e sono copiati in Temp
Saluti,
Nightmare
Re: [TUTORIAL] Impedire download diretto di file
Io uso un metodo diverso: tramite il file .htaccess di apache.
Create un file di testo e inserite queste regole:
Codice:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tuosito.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuosito.com/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|zip)$ http://tuosito.com/nonrubarelamiabandwidth.gif [R,NC]
Salvate il file come .htaccess (col punto davanti, se non vi riesce rinominatelo dopo averlo uppato). Uppatelo nella directory che contiene i file che volete proteggere. Una volta uppato, il file rimane visibile solo se avete settato nel vostro client FTP l'opzione "Visualizza file nascosti".
Con questo metodo i file potranno essere scaricati (o visualizzati, nel caso delle immagini) solo se la richiesta proviene dai due domini indicati nella 3a e 4a riga (se avete altri domini e/o redirect che puntano allo stesso sito, aggiungete una riga).
In caso contrario l'utente verrà reindirizzato all'immagine (o se preferite, ad una pagina web creata ad hoc) di cui all'ultima riga. A me piace mettere un'immagine, così se qualcuno prova a fare link diretto delle mie immagini, compare la mia giffina (leggerissima, perchè sennò non serve a nulla) con su scritto a chiare lettere "NON RUBARE LA MIA BANDA!". Tempo 2 minuti e la smettono di linkare in remoto http://forumtgmonline.futuregamer.it.../icon_wink.gif http://forumtgmonline.futuregamer.it...on_biggrin.gif una mia amica è ancora più sadica, mette foto "poco piacevoli" per dare una bella lezione a chi ci prova http://forumtgmonline.futuregamer.it...on_biggrin.gif.
Questa ultima riga potete ometterla se preferite, in questo caso l'utente vedrà la pagina 403 Forbidden predefinita.
Ultimo appunto, la penultima riga contiene le estensioni dei file da proteggere: potete aggiungerne o toglierne a piacimento, fate attenzione però perché è case sensitive: ovvero, se su .htaccess indicate jpg e poi voi avete un file JPG (maiuscolo) questo non verrà protetto, quindi o lo aggiungete ad .htaccess, oppure cambiate l'estensione al file.
Spero possa tornarvi utile http://forumtgmonline.futuregamer.it...icon_smile.gif
Re: [TUTORIAL] Impedire download diretto di file
Re: [TUTORIAL] Impedire download diretto di file
Intendi il mio per caso? Guarda che su TGM c'è la legge marziale e qualsiasi animatore/admin ha sempre ragione http://forumtgmonline.futuregamer.it...n_rolleyes.gif .
Scherzi a parte concordo, in access non c'è un comando automatico per fare quello che si fa in php, è necessario ricorrere a degli accorgimenti e piccoli trucchi (come il far scaricare non il file ma la copia). Sia lodato il php, peccato che non abbia tempo per impararlo (o forse si... mmm, quasi quasi).
Se intendi il mio codice invece dimmipure come lo modificheresti, sarebbe utile non sono agli altri ma anche a me http://forumtgmonline.futuregamer.it...s/icon_nod.gif
Re: [TUTORIAL] Impedire download diretto di file
Non so' cosa intenda Tanner per brutto ma a me pare semplice e funzionale, l'unica cosa che non mi è chiara è il motivo di dover copiare il file in una directory temporanea http://forumtgmonline.futuregamer.it...ns/scratch.gif, in php ad esempio non occorre.
Ora manca giusto una versione in puro PHP, se qualcuno avesse voglia di farla http://forumtgmonline.futuregamer.it...n_rolleyes.gif
le soluzioni con .htaccess son sempre utili http://forumtgmonline.futuregamer.it...y_icons/ok.gif
@Nightmare: esiste qualcosa di simile a quello che fa .htaccess su IIS ? (non è per sfottere http://forumtgmonline.futuregamer.it..._icons/asd.gif gli utilizzatori di tale server, è per curiosità)
Re: [TUTORIAL] Impedire download diretto di file
ragà mi spiegate meglio cos'è sto furto di banda? Vi ringrazio http://forumtgmonline.futuregamer.it...icon_smile.gif
Re: [TUTORIAL] Impedire download diretto di file
Furto di banda è un download diretto del file. Ad esempio i siti che permettono di scaricare file vorrebbero in linea teorica che si passi dalle loro pagine, cliccando sulla loro pagina il collegamento (in modo che facciano vedere i banner e via dicendo): con il furto di banda questo non avviene, scala solo il costo della banda mensile disponibile
Re: [TUTORIAL] Impedire download diretto di file