Dalam pengembangan Pacilbot dan fitur admin pada Hi-Fi, keamanan aplikasi menjadi salah satu fokus utama agar sistem tidak hanya berjalan secara fungsional, tetapi juga memiliki perlindungan terhadap ancaman umum pada aplikasi web modern. Implementasi yang dilakukan mengacu pada prevention best practice dari Top 10 OWASP 2025, khususnya pada kategori Mishandling of Exceptional Conditions, Injection, serta Authentication Failures. Pendekatan yang digunakan tidak hanya mengikuti nama kategorinya saja, tetapi juga menerapkan rekomendasi prevention dari OWASP seperti secure error handling, fail-closed behavior, centralized validation, dan authentication hardening.
Pada frontend Pacilbot, salah satu fokus utama implementasi keamanan adalah penanganan Mishandling of Exceptional Conditions. Seluruh penanganan error chatbot di-handle melalui exceptional condition. Ketika terjadi fetch failure atau API response non-ok, error tetap dicatat, tetapi frontend hanya menampilkan pesan yang aman kepada user melalui exception message. Dengan pendekatan ini, user tidak lagi melihat detail internal backend seperti stack trace, struktur sistem, maupun detail implementasi API sehingga dapat mencegah sensitive error leakage. Selain itu, state UI juga tetap dijaga konsisten agar chatbot tidak masuk ke undefined behavior ketika terjadi exceptional condition.
Selain itu, frontend Pacilbot juga menerapkan fail-closed behavior ketika request aktif dibatalkan atau chatbot dinonaktifkan. Pada kondisi tersebut, request akan langsung di-abort, response yang pending akan di-reset, dan chat ditutup secara aman ketika availability berubah. Implementasi fail-closed ini penting agar frontend tidak melanjutkan proses pada kondisi yang tidak valid atau tidak aman.

Pada kategori Injection, Pacilbot menerapkan perlindungan terhadap XSS, SQL Injection, dan Cypher Injection. Pacilbot saya buat memiliki validasi pola tidak aman menggunakan checker yang akan mendeteksi pola yang menyerupai XSS, SQL, dan Cypher, termasuk pola seperti script, javascript:, ' OR '1'='1, SELECT ... FROM, serta MATCH (...) DETACH DELETE.
Jika input terdeteksi berbahaya, frontend langsung menerapkan fail-closed behavior dengan tidak mengirim request ke backend. Input dianggap diblok dan chatbot memberikan respons aman berupa "Maaf, saya tidak dapat melakukan itu." Selain itu, apabila hasil sanitasi menyebabkan input menjadi kosong seluruhnya, request juga tetap ditolak untuk mencegah payload berbahaya "lolos separuh" setelah proses sanitasi.



Setiap blocked injection attempt juga dicatat monitoring yang saya buat sehingga frontend memiliki lightweight client-side observability terhadap repeated blocked input maupun suspicious input pattern. Monitoring ini membantu proses debugging, testing, dan observasi pola serangan berulang di sisi frontend tanpa membocorkan detail internal sistem kepada pengguna.


Selain pada chatbot, implementasi security juga diterapkan pada fitur admin Hi-Fi yang memiliki privilege lebih tinggi dibanding pengguna biasa. Pada kategori Authentication Failures, sistem login admin menggunakan JWT token sebagai mekanisme autentikasi sehingga akses administratif hanya dapat dilakukan oleh pengguna yang berhasil login. Untuk mencegah brute force attack maupun credential stuffing, proses login juga dilindungi menggunakan rate limiting sehingga percobaan login berulang dapat dibatasi menghindari denial of service.


Selain autentikasi, fitur admin juga menerapkan authorization berbasis middleware dan security header. Endpoint admin hanya dapat diakses apabila request memiliki token autentikasi dan security header yang valid. Jika pengguna tidak berhasil login atau tidak memiliki kredensial yang sesuai, maka akses ke fitur-fitur admin langsung ditolak. Selain itu, login admin dicatat di login attempt pada database yang tercatat IP-nya sehingga bisa memberi peringatan kepada administrator.
