tutorial laravel

Menyembunyikan Id Pada Url, Tutorial Laravel Obfuscation

Menyembunyikan Id Pada Url – Pada kesempatan kali ini kita akan mempraktekan cara pembuatan obfuscation (Menyembunyikan Id Pada Url) menggunakan laravel, artikel ini adalah kelanjutan dari artikel (https://soft-gain.com/2019/10/17/laravel-aplikasi-inventory-barang-berbasis-web/). Sebelum memulai pembahasan kita akan sedikit membahas tentang apa itu obfuscation, obfuscation sendiri adalah bagian dari cryptography, kata obfuscation sendiri berarti bingung atau dikaburkan, yang mana sesuai dengan tujuan peng-obfuscation itu sendiri adalah untuk membuat informasi internal dari aplikasi kita sulit dimengerti. Tutorial laravel obfuscation id ini sendiri dibuat dengan menggunakan
library hasids/hashids (https://hashids.org/).

Sesuai dengan tujuannya untuk meng-kaburkan informasi (informasi yang kita maksud disini adalah id atau primary key table pada database), obfuscation ini dibuat untuk tujuan keamanan data, dimana biasanya kita akan melihat sebuah request yang dikirimkan oleh client pada server dengan integer biasa (https://website.id/product/edit/17), dengan penggunaan library ini maka id dari primary key kita akan dibuat acak menjadi seperti (https://website/product/edit/XclMn), tentu dengan peng-acakan primary key seperti ini user tidak bisa dengan mudah menebak data ini memiliki id berapa, ada berapa banyak kira-kira data yang ada pada table ini, dan juga tidak bisa membuka sembarang data karena user tidak mengetahui string acak seperti apa yang harus dia masukan pada url address bar.

Baiklah langsung saja kita masuk pada pembahasannya, pertama silahkan install librarynya menggunakan perintah ini :

composer require hashids/hashids

Selanjutnya kita akan memanfaatkan file .env untuk menyimpan secret key kita, secret key ini sangat penting karena kita harus memiliki key ini jika hendak mengembalikan id yang sudah diacak menjadi seperti semula. Tambahkan potongan code dibawah ini :

MY_SECRET_SALT_KEY=softgain1234!@#$

Selanjutnya kita akan melakukan sedikit modifikasi pada bagian model, kali ini module yang akan kita jadikan contoh adalah module sg_barang, jadi silahkan buka model sg_barang.php dan tambahkan potongan code dibawah ini :

public function getIdAttribute(){
        $hashids = new \Hashids\Hashids( env('MY_SECRET_SALT_KEY','MySecretSalt') );

        return $hashids->encode($this->attributes['id']);
}

Pada potongan code diatas, bisa dilihat kalau kita memanfaatkan fitur laravel untuk meng-overwrite value dari database (fungsi getIdAttribute) dalam case ini yang kita overwrite adalah value id, didalamnya kita memanggil library hashids yang sudah di install sebelumnya lalu dengan perintah return $hashids->encode($this->attributes[‘id’]); maka id yang akan ditampilkan pada sisi front end adalah id yang sudah di acak stringnya. Kurang lebih seperti inilah contoh url yang sudah dilakukan pengacakan pada attribute id :

Menyembunyikan Id Pada Url
Hasil Obfuscation Id

Selanjutnya kita buka sg_barang controller dan tambahkan potongan source ini :

public function __construct(){
        $this->Hashids = new \Hashids\Hashids( env('MY_SECRET_SALT_KEY','MySecretSalt') );
}

Diatas adalah potongan saat kita memanggil library hashids.

$id = $this->Hashids->decode($id)[0];

Dan diatas adalah contoh saat kita mengembalikan id yang sudah diacak ke bentuk semula.

Dan karena kita juga sudah membuat aplikasi ini berbasis web service (https://soft-gain.com/2020/06/13/tutorial-laravel-membuat-aplikasi-web-service/), jangan lupa juga untuk memodifikasi pada sg_barang controller untuk bagian api controller-nya (sebetulnya, lebih efisien pengembangan dibuat berdasarkan pattern repository, sehingga ketika terjadi perubahan source kita tidak perlu melakukan modifikasi pada dua source seperti ini, namun mempertimbangkan tutorial ini untuk pemula seperti saya, akhirnya saya putuskan untuk membuatnya masing-masing agar lebih mudah dipahami).

Demikianlah pembuatan obfuscation id dengan menggunakan framework laravel, seperti biasa silahkan ambil full source-nya pada repo saya (https://github.com/ImmanuelJL/myinventory.git) gunakan cabang aplikasi-stok-barang, saya sendiri baru belakangan ini mengenal teknik peng-acakan id seperti ini, karena adanya permintaan yang tidak menginginkan mudahnya akses informasi antar sesama pengguna, pengalaman memanglah guru yang paling berharga, terima kasih.

Leave a Reply

Your email address will not be published. Required fields are marked *