Cara enkripsi request link url agar tidak diketahui field dan isinya (Contoh Link Download)

Assalamu alaikum wr wb?

Kali ini saya akan membuat contoh program php untuk link download yang terenkripsi, dengan link url yang selalu berubah-ubah setiap saat, dalam kurun waktu yang tercatat pada cookie yang telah ditentukan, disini saya akan menggunakan fungsi base64_encode() untuk mengenkripsi link atau url nya, dimana Request dari URL tersebut membawa nama file dan string karakter yang selalu berubah-ubah dalam bentuk field dan value yang di enkripsi oleh base64_encode().

Baiklah sekarang kita buat contoh link download yang terenkripsi, pertama-tama buatlah Fungsi sendiri, yaitu fungsi random_karakter() dan fungsi decode_url(), dimana fungsi random_karakter() ini terdiri dari angka dan hurup secara acak yang selalu berubah-ubah setiap kali dijalankan, dan fungsi decode_url() berfungsi untuk mengembalikan atau menerjemahkan beberapa field dan value pada Request url yang terenkripsi sebelumnya, silahkan lihat contoh kedua fungsi tersebut dibawah ini dalam file function.php

IKLAN

File function.php

<?php
//Membuat fungsi random_karakter() dengan Hurup dan Angka secara acak
function random_karakter(){
 $karakter = array('a','A','b','B','c','C','d','D','e','E','f','F','g','G','h','H','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x','X','y','Y','z','Z','1','2','3','4','5','6','7','8','9','0');
 $max = (count($karakter)-1);
 srand(((double)microtime()*1000000));
 $kar1 = $karakter[rand(0,$max)];
 $kar2 = $karakter[rand(0,$max)];
 $kar3 = $karakter[rand(0,$max)];
 $kar4 = $karakter[rand(0,$max)];
 $kar5 = $karakter[rand(0,$max)];
 $kar6 = $karakter[rand(0,$max)];
 $kar7 = $karakter[rand(0,$max)];
 $kar8 = $karakter[rand(0,$max)];
 $kar9 = $karakter[rand(0,$max)];
 //Anda bisa menambahkan variabe nya seperti $kar10 dan seterusnya
 $random_karakter = $kar1.$kar2.$kar3.$kar4.$kar5.$kar6.$kar7.$kar8.$kar9;
 return $random_karakter;
}
//Membuat fungsi decode_url() untuk memecah dan menerjemahkan Request URL
function decode_url($isi){
 $explode_1 = explode('?', $isi);
 $explode_2 = $explode_1[1];
 $explode_3 = explode('&', base64_decode($explode_2));
 for($i=0; $i<=count($explode_3)-1; $i++){
 $explode_4 = explode('=', $explode_3[$i]);
 $decode_url[$explode_4[0]] = $explode_4[1];
 }
 return $decode_url;
}
?>

Fungsi random_karakter() diatas nantinya akan dijalankan setiap saat beserta cookie random_karakter akan selalu di update setiap kali halaman dikunjungi atau di reload, dan random karakter ini akan dijadikan sebagai sisipan terhadap Request url yang di enkripsi menggunakan base64_encode(), sehingga Request url tersebut tidak diketahui field dan value nya dan akan selalu berubah-ubah setiap saat, silahkan lihat contoh penerapan nya.

File index.php

<?php
include "function.php";
$random_karakter = random_karakter();
//Membuat Cookie random_karakter yang dienkripsi dengan masa cookie 1 jam
setcookie(base64_encode('random_karakter'), base64_encode($random_karakter), time()+3600);
//Contoh link download yang dienkripsi
echo "Contoh: <a href='download.php?".base64_encode("file=nama-file.zip&random=".$random_karakter)."'>nama-file.zip</a>";
echo "<br/>";
echo "Contoh: <a href='download.php?".base64_encode("file=nama-file-lainya.zip&random=".$random_karakter)."'>nama-file-lainya.zip</a>";
exit;
?>

Dalam hal ini anda juga bisa menggunakan file .htaccess untuk manipulasi url nya, supaya lebih terlihat profesional, namun saat ini saya hanya akan memberikan materi sebatas enkripsi url saja, silahkan anda kembangkan sendiri program nya.

Selanjutnya link url tersebut di Request dari file index.php ke file download.php untuk di proses dengan metode get yang telah di enkripsi sebelumnya, silahkan lihat pemrosesan nya pada file download.php dibawah ini:

File download.php

<?php
include "function.php";
//Jika cookie random_karakter yang di enkripsi ada
if(isset($_COOKIE[base64_encode('random_karakter')])){
$decode_url = decode_url($_SERVER['REQUEST_URI']);
$cookie = base64_decode($_COOKIE[base64_encode('random_karakter')]);
$random = $decode_url['random'];
$file = $decode_url['file'];
 if($cookie == $random){
 //Jika file ada maka ganti Header php sesuai type file
 if(file_exists($file)){
 header("Content-Type: application/zip");
 header("Content-Disposition: attachment; filename=".basename($file));
 header("Content-Length: ".filesize($file));
 readfile($file);
}
 else{
 //Jika file tidak ada
 echo "Maaf, file <b>$file</b> tidak tidak ditemukan, mungkin sudah dihapus! <a href='index.php'>index.php</a>";
 }
}
 else{
 echo "Random karakter ($random) salah, silahkan diproses ulang! <a href='index.php'>index.php</a>";
 }
}
 else{
 //Jika cookie tidak ada
 echo "Maaf, sesi download anda telah berakhir! Silahkan dicoba kembali <a href='index.php'>index.php</a>";
}
exit;
?>

ScreenShot: Alamat URL download oleh Internet Download Manager

Untuk mencoba script php diatas, silahkan persiapkan file nama-file.zip dan file nama-file-lainya.zip kemudian simpan pada direktori yang sama dengan kode nya, silahkan untuk mendownload script di atas dengan lengkap, anda juga bisa menggunakan fungsi selain base64_encode(), dan menambahkan form Verifikasi dengan Random karakter sebelum pengunjung mendownloadnya, silahkan lebih di kembangkan lagi script nya.

Semoga tutorial ini berguna buat anda yang sedang belajar mengenai php, dan jika ada pertanyaan silahkan mengisi form komentar dibawah ini dengan akun google anda, dan terimakasih sudah menyimak.

IKLAN:


Wassalam...

Posting Komentar

3 Komentar

  1. Nah ini nih yg ane cari.,,. Keren brooo
    Thx nyak, ijin sedop script nya

    BalasHapus
  2. Kalo pengen enkripsi link download dari google drive gimana ya mas. Thanks

    BalasHapus
  3. Komentar ini telah dihapus oleh administrator blog.

    BalasHapus