Cara Cepat Mengenkripsi URL di Codeigniter

Meng-enkripsi URL di Codeigniter 

Proses mengirim data ID primary key atau id di URL sering KITA lakukan sebagai para developer website terutama di Codeigniter. 


Cara Cepat Mengenkripsi URL di Codeigniter
Cara Cepat Mengenkripsi URL di Codeigniter 

ID primary key atau id di URL merupakan data vital. Karena ID primary key atau id di URL mewakili data tertentu dan setiap data memeiliki ID yang uniqe atau tidak sama antara satu dengan lainnya.
Contohnya:

www.mysite.com/edit_data/1

Pada url diatas merupakan contoh penerapan ID pada url, ID primary key dapat diketahui secara jelas. Tentunya hal ini cukup berbahaya dan riskan karena ID tersebut dapat dimanipulasi dan disalahgunakan. Untuk mencegah dan menanggulangi hal tersebut, kita dapat melakukan proteksi menjadi seperti dibawah ini supaya lebih aman.

www.mysite.com/edit_data/Umhxc2ZDeHlpc1JpYWNIUVdzNG1sZz99


Terus bagaimana cara mengatasi hal ini ?

Cara Mengenkripsi URL di CodeIgniter


Sebetulnya CodeIgniter sudah mempunyai library untuk melakukan enkripsi, namun enkripsi yang digunakan kurang efisien jika digunakan untuk mengenkripsi ID pada URL.

langkah pertama, copas kode dibawah ini dan simpan di folder /application/helper/ dengan nama security.ini

Kodenya

  
[security] 
encryption_key=1111111111111111 ;16 digits 
iv=2456378494765431 ;16 digits 
encryption_mechanism=aes-256-cbc
Note : * Ganti nilai iv sesuai dengan keinginan namun harus berjumalh 16 digit

Kemudian buat file security _helper.php pada folder /application/helper/ dan isikan dengan kode dibawah ini

Kodenya

  
<?php if (!defined("BASEPATH")) exit("No direct script access allowed");
 function encrypt_url($string) {
     $output = false;
     /*
     * read security.ini file & get encryption_key | iv | encryption_mechanism value for generating encryption code
     */        
     $security       = parse_ini_file("security.ini");
     $secret_key     = $security["encryption_key"];
     $secret_iv      = $security["iv"];
     $encrypt_method = $security["encryption_mechanism"];
     // hash
     $key    = hash("sha256", $secret_key);
     // iv – encrypt method AES-256-CBC expects 16 bytes – else you will get a warning
     $iv     = substr(hash("sha256", $secret_iv), 0, 16);
     //do the encryption given text/string/number
     $result = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
     $output = base64_encode($result);
     return $output;
 }
 function decrypt_url($string) {
     $output = false;
     /*
     * read security.ini file & get encryption_key | iv | encryption_mechanism value for generating encryption code
     */
     $security       = parse_ini_file("security.ini");
     $secret_key     = $security["encryption_key"];
     $secret_iv      = $security["iv"];
     $encrypt_method = $security["encryption_mechanism"];
     // hash
     $key    = hash("sha256", $secret_key);
     // iv – encrypt method AES-256-CBC expects 16 bytes – else you will get a warning
     $iv = substr(hash("sha256", $secret_iv), 0, 16);
     //do the decryption given text/string/number
     $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
     return $output;
 }
Lalu edit file autoload.php yang terdapat di /application/config/ , pada $autoload[‘helper’] tambahkan security

Kodenya

  
 $autoload['helper']= array('security');

Untuk melakukan enkripsi urlnya, tinggal memanggil encrypt_url($id);

Contoh Kodenya:

  
 <a href='<?=base_url("user/edit/".encrypt_url($id)."")' class="btn"></a>

Dan untuk melakukan decrypnya (membuka id yang di encrypt) dapat menggunakan decrypt_url($id);

Kodenya

  
 public function edit($id_user) {

   $id_user= decrypt_url($id_user);

 }


Done.. Hore...



Previous Post
Next Post
Related Posts