Tips : Penting nya validasi di backend (API)
Disclaimer: Tulisan ini adalah opini dan hasil analisis saya sendiri dari beberapa sumber yang sesuai dengan pengalaman pribadi, mungkin saja ada perbedaan pandangan dan pengalaman pembaca.
Halo teman - teman semua 😊 semoga sehat selalu ya dan pandemi covid-19 ini semoga cepat berakhir, kali ini saya ingin membagikan tips untuk teman teman developer ataupun pentester tentang penting nya menambahkan validasi di backend.
Kebanyakan kasus yang saya temui para teman teman developer ini hanya menambahkan validasi di sisi frontend nya saja,
contoh nya di frontend saat user ingin melakukan withdraw di bawah Rp 100.000 tidak bisa karna validasi di frontend hanya mengizinkan minimal withdraw Rp 100.000, tapi bagaimana proses di belakang itu seperti di API? apa itu sudah cukup aman? 🤔
😋ettttt… tidak semudah itu,, ingat Jangan percaya user, karna kita tidak tau user seperti apa yang menggunakan aplikasi kita, bagaimana jika user kita seorang attacker/pentester yang mengerti cara intercept menggunakan tools brupsuite atau dia memotong data client yang asli di tengah dan merubah data tersebut sebelum di teruskan ke server?
Dan kebanyakan tidak ada validasi di API, Kenapa di API? karena di beberapa kasus yang saya temui kebanyakan teman teman dev yang ngerjain API ini lupa/kurang aware akan ancaman security saat pembuatan API (tapi tidak semua dev yang ngerjain API begitu ya).
Kita ambil contoh saat kita mau melakukan withdraw saldo di website https://kitabantu.co.id terus nge hit ke :
POST /v2/account/order/withdraw
Host: api.kitabantu.co.id{“product_code”:”WD123",”balance”:1000424.00,”all_unit”:”y”,”currency”:”IDR”,”check_product”:true}
Disana terlihat saat kita mau melakukan withdraw dari client dia mengirimkan data ke Host: api.kitabantu.co.id dengan endpoints POST /v2/account/order/withdraw dan ada juga body json yang di bawa {“product_code”:”WD123",”balance”:1000424.00,”all_unit”:”y”,”currency”:”IDR”,”check_product”:true} , terlihat parameter dari body json yang saya bold ”balancee”:1000424.00 adalah parameter balance/saldo yang ingin kita withdraw.
Bila di parameter balance tersebut tidak ada validasi dan kita rubah value dari parameter ”balance”:1000424.00 menjadi ”balance”:999999999.00 otomatis data yang di kirimkan tadi akan di proses dan menghasilkan output sukses seperti dibawah
Saat tadi kita rubah value balance/saldo menjadi 999999999 kita mendapatkan respon {“success”:true,”message”:””,”status_code”:200} yang artinya berhasil/sukses.
Dari kasus diatas value di parameter balance tersebut hanya di validasi di Frontend saja, dan tidak pada backend. sehingga user yang luar biasa 😋 bisa melakukan withdraw melebihi dari saldo aktif mereka. Gimana udah kebayang bahayanya? masih mau cuman kasih validasi di frontend saja?
Kasus ini masih sering banyak di temui di perusahaan fintech, banking, ecoomerce, dll. dari pengalaman saya dari tahun 2015 dulu sampai 2020 sekarang setiap saya mendapatkan client yang menyewa jasa security pentest di https://kitabantu.co.id masih banyak menemukan bug/vulnerability seperti ini loh….
Semoga bermanfaat dan bila ada kesalahan penulisan/kata saya sangat senang bila teman teman memberitahu saya sembari diskusi di
Linkedin : https://www.linkedin.com/in/anggi-gunawan17/
Website : https://kitabantu.co.id