Kenapa ya, terdapat web master sengaja menyediakan beberapa file untuk di-download, tetapi berusaha juga dengan berbagai cara untuk melakukan pencegahan terhadap file-filenya daripada agar bisa di-download langsung atau disebut hotlinking. Pastinya ada alasan baik.

Alasan Pencegahan Download Langsung

Web master punya alasan kenapa file-file tidak boleh dipungut langsung, di antaranya:

  • ingin mengetahui statistik file yang didownload, sudah berapa kalikah file didownload.
  • ingin mengetahui siapa saja yang mendownload, baik dengan cara harus login dulu, atau harus memasukkan email untuk dikirim link-nya lewat email, merepotkan memang.
  • ingin merahasikan lokasi file berada, khawatir kalau lokasinya ketahuan bisa didownload semua.
  • anda menginginkan hit pada halaman web anda, dan tidak rela file download anda dimanfaatkan oleh pihak lain.
  • ada alasan lain? …

Anda termasuk yang mana? kalau tidak termasuk, biarkanlah file bisa bebas didownload. Tetapi meneruskan baca arikel ini tidak ada salahnya, mungkin suatu ketika anda membutuhkannya.

Cara-cara Mencegah Download Langsung

1. Cara pertama, gunakan .htaccess ini:

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]

RewriteCond %{REQUEST_FILENAME} .*zip$|.*pdf$|.*mp3$ [NC]
RewriteRule (.*) /halaman_download.php?file=$1 [R]

keterangan:

  • baris ke 3, referer tidak boleh kosong, artinya tidak boleh download langsung
  • baris ke 4, yourdomain diganti dg nama domain anda, artinya tidak boleh didownload dari website lain
  • baris ke 5, google, membolehkan download dari google
  • baris ke 6, search, membolehkan download dari link hasil search
  • baris 8, extensi file yang diatur tidak boleh download langsung
  • baris 9, halaman redirect, …

2. Cara kedua menggunakan PHP.

cara ini adalah dengan meng-output file yang didownload dari script php, sementara di htaccess anda harus didefinisikan redirect file yang didownload di arahkan ke sebuah file php.

File .htaccess berisi:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} .*zip$|.*pdf$|.*mp3$ [NC]
RewriteRule (.*) /download.php?file=$1 [R]

dan file download.php berisi:

$ref = $_SERVER["HTTP_REFERER"];

if ( $ref != ‘http://www.yourdomain.com/halaman_download.php’ )
{
header(”Location:http://www.yourdomain.com/halaman_download.php”);
exit;
} else {
header(”Content-type: $filetype”);
header(”Content-Disposition: attachment; filename=\”$filename\”");
header(”Content-Length: $filesize”);

echo file_get_contents($filepath);
}

3. Cara ketiga, tidak mempublikasikan URL file.

  • jangan pernah mempublikasikan URLnya sehingga nggak ada yang bisa download langsung
  • dengan PHP, kita bisa meng-generate random encrypted URL, misalnya: download/g6Tgskd93/file.zip
  • random URL tersebut berbasis session dg waktu terbatas
  • lalu, kalo ada yg mengakses link tersebut, maka htaccess me-redirect ke halaman atau file download, kalau link-nya sudah expired maka muncul pesan error page not found atau di-redirect ke halaman tertentu.

Sekedar Info

Tip ini berkaitan dengan penggunaan mod_rewrite pada htaccess, akan sangat baik bagi anda untuk memahami bagaimana menggunakan mod_rewrite. Membaca manual memang paling tepat tetapi kadang kurang praktis, membaca tutorial jadi pilihannya, yaitu melawat ke
Stupid htaccess Tricks, anda wajib ke sana.