Se si vogliono proteggere i propri file dal download selvaggio da parte di altri siti, e soprattutto evitare che a voi non venga riconosciuto neanche il merito del duro lavoro, vi resta una sola alternativa validaper impedire questo furto di banda, cioè quella di inserire un controllo del refer o meglio da dove è stata inviata la richiesta di download....
Così facendo il vostro sito controlla chi fa richiesta per effettuare il download e se è abilitato può procedere, altrimenti apparirà al posto del file un messaggio di errore impostato da noi oppure una pagina web che abbiamo preparato.
Il codice puro è molto semplice, e inserito nel punto giusto fa la magia...
1
2
3
4
5
6
7
$domain=$_SERVER['SERVER_NAME'];define('ALLOWED_REFERRER',$domain);if(ALLOWED_REFERRER !==''&&(!isset($_SERVER['HTTP_REFERER'])||strpos(strtoupper($_SERVER['HTTP_REFERER']),strtoupper(ALLOWED_REFERRER))===false)){die("Internal server error. Please contact system administrator.");}
oppure si può inserire al posto del messaggio di errore un redirect ad una pagina del sito:
6
{die(header("location: http://www.dominio.com"));
Ora però, dopo aver visto il codice, vediamo dove lo possiamo inserire. Gli esempi si basano su due sistemi di download manager che sono disponibili su Wordpress: Download Monitor e WP-downloadmanager
Nel primo caso il codice andrà inserito nel file chiamato download.php alla linea 53 dove si legge //select a download:
50
51
52
53
54
55
56
57
mysql_real_escape_string($id));break;case("Filename"):// select a download//$query_select_1 = sprintf("SELECT * FROM %s WHERE filename LIKE '%s' LIMIT 1;",$query_select_1=sprintf("SELECT * FROM %s WHERE filename LIKE '%s' ORDER BY LENGTH(filename) ASC LIMIT 1;",mysql_real_escape_string($wp_dlm_db),mysql_real_escape_string("%".$id));
Nel secondo caso il controllo della provenienza va inserito nel file wp-downloadmanager.php alla linea 160
155
156
157
158
159
160
161
162
163
164
165
166
add_action('template_redirect','download_file',5);function download_file(){global$wpdb,$user_ID;$id=intval(get_query_var('dl_id'));if($id>0){$file_path=stripslashes(get_option('download_path'));$file_url=stripslashes(get_option('download_path_url'));$download_method=intval(get_option('download_method'));$file=$wpdb->get_row("SELECT file, file_permission FROM $wpdb->downloads WHERE file_id = $id AND file_permission != -1");if(!$file){header('HTTP/1.0 404 Not Found');die(__('Invalid File ID.','wp-downloadmanager'));
Salve sono arrivato a questo articolo cercando del codice anti leech per prevenire il download diretto di files. Senza voler utilizzare i plugin citati e modificati come posso utilizzare il primo codice citato “inserito nel punto giusto fa la magia”.
Mi spiego meglio, ho una semplice form html con il download ad un file come segue:
come faccio ad applicare lo script in questo caso?
perchè se uno visualizza il codice sorgente e poi nell’indirizzo del browser viene digitato direttamente http://www.esempio.com/test/test.zip il file viene scaricato direttamente
non vedo il codice.. comunque questo è PHP e fa un controllo sulla provenienza del richiedente… più semplicemente se ti trovi su server linux puoi usare il file .httaccess
così impostati ti rimandano alla pagina di accesso negato 403, per aggiungere altre estensioni da bloccare metti la barra verticale | e l’estensione zip, rar ecc
se vuoi mandare chi prova a scaricare un file su una pagina decisa da te l’ultima riga la sostituisci con qualcosa del genere
about 1 year ago
Данный пост на самом деле помог мне принять очень нужное для меня решение. За что автору отдельное спасибо! С нетерпением жду от Вас новых сообщений!
about 1 year ago
Salve sono arrivato a questo articolo cercando del codice anti leech per prevenire il download diretto di files. Senza voler utilizzare i plugin citati e modificati come posso utilizzare il primo codice citato “inserito nel punto giusto fa la magia”.
Mi spiego meglio, ho una semplice form html con il download ad un file come segue:
come faccio ad applicare lo script in questo caso?
perchè se uno visualizza il codice sorgente e poi nell’indirizzo del browser viene digitato direttamente http://www.esempio.com/test/test.zip il file viene scaricato direttamente
Grazie mille
about 1 year ago
non vedo il codice.. comunque questo è PHP e fa un controllo sulla provenienza del richiedente… più semplicemente se ti trovi su server linux puoi usare il file .httaccess
puoi usarlo in forma semplice
RewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://(.+\.)?miosito\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
oppure definendo i siti accreditati per il download
RewriteEngine OnRewriteCond %{HTTP_REFERER} ^http://(.+\.)?miosito\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?sitoamico1\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?sitoamico2\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
così impostati ti rimandano alla pagina di accesso negato 403, per aggiungere altre estensioni da bloccare metti la barra verticale | e l’estensione zip, rar ecc
se vuoi mandare chi prova a scaricare un file su una pagina decisa da te l’ultima riga la sostituisci con qualcosa del genere
RewriteRule .*\.(gif|jpg|png)$ http://tuosito.com/pagerrore.html [R,NC]