Web Application Security Fundamentals #12: Secure Coding Practices
Terapkan parameterization, context encoding, centralized authorization, secret management, safe error handling, dependency hygiene, dan testing.
Secure coding bukan daftar karakter terlarang. Ia adalah kebiasaan memilih API yang aman, memusatkan policy, mengurangi privilege, dan membuktikan behavior lewat test.
Etika dan scope: praktikkan hanya pada local lab, aplikasi milik sendiri, atau sistem yang memberikan izin tertulis. Tutorial ini tidak mengizinkan pengujian terhadap target publik.

Tujuan pembelajaran
- menggunakan parameterized API dan context encoding
- memusatkan authorization
- menjaga secret serta dependency
- menangani error dan logging secara aman
Prasyarat
Gunakan browser modern, Developer Tools, dan local lab. Catat versi tool serta environment ketika menguji. Output contoh bersifat ilustratif kecuali dinyatakan sebagai hasil pengujian; jangan menganggap perilaku satu stack berlaku universal.
1. Gunakan safe API
Pisahkan data dari instruction. Untuk database, gunakan parameterized query atau ORM API yang benar. Dynamic identifier seperti nama kolom tidak selalu dapat diparameterkan; pilih dari allowlist.
2. Encode sesuai output context
HTML text, HTML attribute, URL, CSS, dan JavaScript memiliki aturan berbeda. Gunakan auto-escaping template dan hindari menyusun executable context dari untrusted data. Sanitization HTML hanya untuk use case yang memang mengizinkan markup dan harus memakai library terawat.
3. Centralized authorization
Jangan menyebar pemeriksaan role ad hoc. Gunakan policy layer yang mengerti action, resource, ownership, tenant, dan state.
authorize(user, "update", invoice);
await invoiceService.update(invoice, validatedInput);
Tetap uji endpoint langsung; tombol tersembunyi bukan authorization.
4. Secret management
Jangan hard-code secret, memasukkannya ke frontend, container image, log, atau sample config. Gunakan secret manager/environment injection yang sesuai dan rotasi ketika terpapar. Menghapus dari commit terbaru tidak menghapus history.
5. Safe error handling
Tangkap expected error, gagal secara aman, dan kembalikan correlation ID. Jangan menampilkan stack trace atau database error ke pengguna. Pastikan exceptional condition tidak berubah menjadi fail-open.
6. Dependency hygiene
Gunakan sumber registry tepercaya, lockfile, update policy, review install script, dan monitoring advisory. Jangan melakukan update major otomatis ke production tanpa test.
7. Test invariant
Uji siapa boleh melakukan apa terhadap object mana, boundary input, duplicate request, concurrency, dependency failure, dan rollback. Security unit test paling berguna ketika terkait business rule.
8. Code review
Tanyakan: apakah ada input baru, sink baru, privilege, data sensitif, logging, dependency, file operation, redirect, webhook, atau perubahan trust boundary?
Kesalahan umum
- Membuat crypto sendiri.
- Mengandalkan blacklist.
- Hard-code credential.
- Menangkap semua error lalu melanjutkan proses.
- Menonaktifkan security control agar test lulus.
Quality gate sebelum diterapkan
- [ ] Scope dan asset sudah jelas.
- [ ] Control dijalankan di sisi yang menjadi security boundary.
- [ ] Positive test dan negative test tersedia.
- [ ] Error tidak membocorkan secret atau detail internal.
- [ ] Logging cukup untuk detection tanpa merekam credential.
- [ ] Versi dependency dan dokumentasi dicatat.
- [ ] Tidak ada klaim “100% aman”.
- [ ] Perubahan diuji pada staging atau local lab.
Kesimpulan
Secure code mengurangi kemungkinan vulnerability, tetapi keputusan security juga memengaruhi bisnis. Tutorial berikutnya membahas dampak nyata dan cara mengkomunikasikan risk.
Referensi resmi
- OWASP Top 10:2025 — diakses 22 Agustus 2026.
- OWASP Cheat Sheet Series — diakses 22 Agustus 2026.
- OWASP Web Security Testing Guide — Stable — diakses 22 Agustus 2026.
- MDN Web Security — diakses 22 Agustus 2026.
Post Terkait
Web Application Security Fundamentals #11: Tools Dasar Web Security Testing
Gunakan browser DevTools, curl, proxy, scanner, SAST, SCA, secret scanning, dan WSTG secara aman sesuai fungsi serta bat...
Web Application Security Fundamentals #10: Security Headers
Konfigurasikan CSP, HSTS, nosniff, Referrer-Policy, frame protection, dan Permissions-Policy berdasarkan kebutuhan aplik...
Membangun SOC yang Lebih Kuat Dimulai dari Security Tools yang Tepat
SOC modern tidak bergantung pada satu platform. Pelajari peran SIEM, SOAR, XDR, NDR, Threat Intelligence, dan open-sourc...