
Ketika berbicara tentang keamanan siber (cybersecurity), banyak pengembang berasumsi bahwa pengujian keamanan aplikasi (Application Security Testing) hanya relevan untuk sistem korporasi berskala besar, portal perbankan, atau platform e-commerce. Namun, bagaimana dengan website pribadi atau side project yang kita hosting sendiri ke publik?
Saat memutuskan untuk meng-hosting website pribadi saya, ognivid.com, saya sadar bahwa merilis sebuah situs ke internet publik berarti siap menghadapi ribuan pemindaian otomatis (bot scanners) dan potensi ancaman siber setiap harinya. Oleh karena itu, saya memutuskan untuk melakukan pengujian keamanan dinamis (Dynamic Application Security Testing / DAST) menggunakan ZAP by Checkmarx (Versi 2.17.0).
Inilah hasil pemindaian tersebut, apa yang saya pelajari, dan langkah-langkah yang akan saya ambil untuk membuat pertahanan web ini semakin tangguh.
Hasil Pindai: Kebanggaan pada Angka “0 High-Risk”
Setelah menjalankan pemindaian menyeluruh pada domain utama beserta endpoint yang terhubung, laporan ZAP memberikan ringkasan metrik sebagai berikut:
-
🟢 High Risk: 0
-
🟡 Medium Risk: 9
-
🟡 Low Risk: 7
-
🔵 Informational: 9
Melihat angka 0 pada kategori High Risk memberikan kepuasan tersendiri bagi seorang pengembang. Ini adalah bukti validasi bahwa fondasi arsitektur, routing data, serta konfigurasi inti website bebas dari kerentanan fatal seperti SQL Injection, Remote Code Execution (RCE), atau Cross-Site Scripting (XSS) kritis yang dapat dimanfaatkan penyerang untuk mengambil alih sistem secara langsung.
Namun, dalam dunia software engineering, sistem yang aman bukan berarti sistem yang sempurna tanpa celah sama sekali. Justru, bagian paling menarik dari audit keamanan adalah membedah temuan pada kategori Medium dan Low sebagai daftar “pekerjaan rumah” untuk iterasi perbaikan selanjutnya.
Bedah Temuan: Daftar Pekerjaan Rumah (Next Iteration)
Bagi rekan-rekan sesama developer yang ingin memahami apa saja yang biasanya perlu diperketat pada sebuah aplikasi web modern, berikut adalah beberapa poin sorotan utama dari laporan ZAP saya:
1. Penguatan HTTP Security Headers (Medium & Low Risk)
Sebagian besar alert tingkat menengah dan rendah berhubungan dengan HTTP Response Headers—lapisan pertahanan pertama yang memberi tahu browser pengunjung bagaimana harus berinteraksi dengan server kita secara aman.
-
Content Security Policy (CSP): Laporan mencatat perlunya penyempurnaan pada direktif CSP (seperti pembatasan wildcard, script-src, dan style-src). CSP berfungsi mencegah penyerang menyisipkan skrip berbahaya (XSS) ke dalam halaman web.
-
Missing Anti-clickjacking Header: Pentingnya menambahkan header
X-Frame-Optionsatau direktif CSPframe-ancestorsuntuk mencegah situs kita di-embed ke dalam iframe oleh situs jahat (serangan Clickjacking). -
Strict-Transport-Security (HSTS): Memaksa browser agar selalu berkomunikasi menggunakan protokol HTTPS yang terenkripsi, menutup celah serangan Man-in-the-Middle.
-
X-Content-Type-Options: Mengatur nilai ke
nosniffagar browser tidak melakukan salah interpretasi tipe file yang diunduh.
2. Mitigasi Cross-Domain & CORS (Medium Risk)
Laporan juga menyoroti konfigurasi Cross-Domain Misconfiguration (CORS). Konfigurasi CORS yang terlalu permissif (misalnya menggunakan wildcard Access-Control-Allow-Origin: *) dapat memungkinkan domain pihak ketiga membaca respons API dari server kita. Membatasi akses hanya pada domain yang tepercaya adalah langkah krusial untuk menjaga isolasi data.
3. Menyembunyikan Jejak Teknologi / Information Disclosure (Low Risk)
Pada kategori risiko rendah, pemindai mendeteksi adanya kebocoran informasi pada header X-Powered-By. Secara bawaan, server sering kali memberi tahu publik bahasa atau teknologi apa yang digunakan di belakang layar (contohnya menampilkan versi PHP tertentu).
Walaupun bukan kerentanan langsung, menyembunyikan informasi ini (security through obscurity sebagai layer tambahan) akan mempersulit penyerang yang sedang mencari target dengan kelemahan pada versi teknologi spesifik.
Langkah Selanjutnya: Keamanan adalah Proses Berkelanjutan
Dari hasil audit ini, action plan saya untuk memperbarui arsitektur web ke depan meliputi:
-
Konfigurasi
.htaccess/ Server Block: Menambahkan baris kode untuk mengaktifkan seluruh HTTP Security Headers (HSTS, X-Frame-Options, X-Content-Type-Options) secara statis. -
Fine-Tuning CSP: Meracik Content Security Policy yang ketat namun tetap kompatibel dengan aset eksternal yang sah (seperti font atau skrip analitik).
-
Menyembunyikan Server Signature: Mematikan paparan token
X-Powered-Bypada konfigurasi server. -
Audit Rutin: Menjadikan pengujian DAST sebagai jadwal rutin setiap kali ada perubahan arsitektur atau penambahan fitur baru pada web.
Kesimpulan
Membangun dan meng-hosting website pribadi memberikan kebebasan penuh dalam berkreasi, namun juga menuntut tanggung jawab penuh atas keamanannya. Mencapai 0 High-Risk vulnerabilities adalah awal yang sangat baik, tetapi pola pikir (mindset) untuk terus belajar dan memperbaiki celah-celah kecil adalah yang utama.
Security is a process, not a one-time product.
