Tulisan ini berangkat dari satu temuan kecil yang sepele, hanya soal field rating. Fiturnya sangat simple, user bisa kasih rating 1 sampai 5 bintang. Dari tampilan, batasannya terlihat jelas - bintang cuma bisa sampai angka 5 tidak bisa memilih lebih ataupun minus.
Saya melakukan intercept request yang dikirim yang mana hanya id dan angka rating
Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&RatingValue=3
saya dengan penasaran terus menambahkan angka ratingnya, kirim 6 masuk, kirim 14.5 masuk juga. Terus saya coba lebih jauh
Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&RatingValue=14.5
Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&RatingValue=-14.5
Dua-duanya diterima oleh server dan tidak ada error.


Kenapa Ini Bukan Sekadar "Ah, Cuma Validasi"
Mungkin kelihatannya sepele dan terus mikir "ah, cuma validasi input doang", tapi rating bukan cuma angka yang disimpan. Dia dipake buat ranking, rata-rata, dan juga rekomendasi.
Coba bayangin produk yang punya ratusan rating wajar di angka 4-5, terus tiba-tiba masuk satu rating -14.5. Rata-ratanya langsung ngaco, bukan karena productnya jelek tapi karena ada satu invalid value yang masuk.
Bug ini sangat simple, ga ada teknik canggih, ga ada chain yang ribet. Cuma Intercept, ubah angka, kirim, udah.
