Risultati da 1 a 8 di 8

Discussione: [TUTORIAL] Impedire download diretto di file

  1. #1
    L'Onesto L'avatar di Nightmare
    Data Registrazione
    04-10-01
    Località
    Roma
    Messaggi
    1,421

    Predefinito [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

  2. #2
    Lo Zio L'avatar di Maya
    Data Registrazione
    16-03-02
    Località
    Ragusa
    Messaggi
    2,347

    Predefinito 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 una mia amica è ancora più sadica, mette foto "poco piacevoli" per dare una bella lezione a chi ci prova .

    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

  3. #3

    Predefinito Re: [TUTORIAL] Impedire download diretto di file

    Ammazza quanto è brutto il codice di ASP...

  4. #4
    L'Onesto L'avatar di Nightmare
    Data Registrazione
    04-10-01
    Località
    Roma
    Messaggi
    1,421

    Predefinito 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 .

    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

  5. #5

    Predefinito 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 , in php ad esempio non occorre.

    Ora manca giusto una versione in puro PHP, se qualcuno avesse voglia di farla

    Maya ha scritto lun, 24 ottobre 2005 alle 20:06
    Spero possa tornarvi utile
    le soluzioni con .htaccess son sempre utili

    @Nightmare: esiste qualcosa di simile a quello che fa .htaccess su IIS ? (non è per sfottere gli utilizzatori di tale server, è per curiosità)

  6. #6
    Il Puppies L'avatar di *night_angel*
    Data Registrazione
    15-10-03
    Località
    Napoli
    Messaggi
    399

    Predefinito Re: [TUTORIAL] Impedire download diretto di file

    ragà mi spiegate meglio cos'è sto furto di banda? Vi ringrazio

  7. #7
    L'Onesto L'avatar di Nightmare
    Data Registrazione
    04-10-01
    Località
    Roma
    Messaggi
    1,421

    Predefinito 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

  8. #8
    L'Onesto L'avatar di Nightmare
    Data Registrazione
    04-10-01
    Località
    Roma
    Messaggi
    1,421

    Predefinito Re: [TUTORIAL] Impedire download diretto di file

    Up per i posteri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice HTML è Disattivato