Domanda

Il lavoro a portata di mano:

Voglio fare in modo che il mio sito web agli utenti di visualizzare una pagina prima di iniziare a scaricare.Se non hanno guardato la pagina, ma tenta di hotlink per i file direttamente andare alla pagina web prima che il download è consentito.

Eventuali suggerimenti che sono meglio della mia idea per l'invio di un cookie e - prima di avviare il download - controllare se il cookie esiste (via .htaccess)?

La pagina web e il download di file su server diversi.

Ambiente:

  • Apache 2 su tutte le macchine
  • PHP 5 su tutte le macchine
  • MySQL 5 disponibile sulla pagina web "server" (non è possibile accedere dal server di download)

Nathan ha chiesto che cosa il problema è che cerco di risolvere, e in realtà non è che voglio evitare collegamenti da - per esempio - forum.Se la gente scarica dal nostro server, utilizzando la nostra larghezza di banda, voglio mostrare loro una pagina con un annuncio prima di avviare il download.Non ha bisogno di essere completamente sicura, ma abbiamo bisogno di fare un po ' di soldi per finanziare il server, giusto?:)

È stato utile?

Soluzione 6

Ho intenzione di utilizzare mod_auth_token per assicurarsi che l'utente ha recenti "link".

Con mod_auth_token è possibile creare scadenza link, cioèse qualcuno decide di fare un collegamento esistente e post su un altro sito, questo è il link scade dopo un periodo di tempo specificato.Che si tradurrà in un 403 FORBIDDEN che posso catturare e reindirizzare l'utente alla pagina HTML voglio lui.

Altri suggerimenti

Invece di permettere l'hotlinking per i file di archivio di loro al di fuori di un web accessibile del percorso.Invece di fare richieste di download andare a uno script php che avvia il download.Si può mettere verifiche per assicurarsi che la pagina di richiesta era quello che volevi leggere.

Un Apache mod_rewrite RewriteRule può fare questo.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.example.com/page.html$
RewriteRule file.exe http://www.example.com/page.html [R=301,L]

In sostanza, se una richiesta di file.exe non è venuto con page.html come il referrer, ti 301 reindirizzare l'utente a page.html.

Si potrebbe utilizzare lato server distribuiti le sessioni invece di cookie, ma che è probabilmente più problemi di quanto ne vale la pena.

Si potrebbe anche vietare l'accesso per le richieste senza un referente o un male referrer.Ma ancora più fakable di un cookie.

Potrebbe dipendere da quanto si cura.

La soluzione qui dipende dal problema che si sta tentando di risolvere.Se si sta solo cercando di assicurarsi un link diretto non venga pubblicato in un forum e quant'altro, poi basta controllare la pagina di riferimento con .htaccess dovrebbe essere sufficiente.Naturalmente, il riferimento può essere simulato abbastanza facile, quindi, se il rischio di qualcuno che fa questo è un problema, allora si avrà bisogno di fare qualcosa di diverso.

Un cookie dovrebbe fare il trucco se avete bisogno di qualcosa di un po ' più sicuro.Non possiamo semplicemente utilizzare le sessioni di php perché il file server e il server web sono in scatole diverse.Ma si potrebbe creare un cookie basato su un hash del tempo e di un valore segreto.

cookievalue = sha1('secretvalue'.date('z-H'));

Quando l'utente richiede il file effettivo, il fileserver genera questo cookie di nuovo e fa in modo che corrisponda agli utenti.Questo significa che, anche se l'utente forgia il cookie, non sarà valido dopo un'ora, quindi chi se ne frega, e non può generare la loro propria nuova, perché non conoscono il valore segreto.

Stavo per suggerire la .htaccess rinvio trucco, ma non è un modo molto sicuro.È facile fare uno script PHP, con un costume http referral aggiunto.Se si immette la pagina di download c'è, si pensi di venire da quella pagina.

È questo un problema?Puoi dirci qualcosa contesto della vostra pagina di download?

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