Panduan

Cara Memperbaiki Header Keamanan HTTP yang Hilang

Ketiadaan header keamanan HTTP penting membuat aplikasi web rentan terhadap serangan cross-site scripting (XSS), clickjacking, penurunan protokol, dan pencurian sesi login.

Jawaban Singkat

Aktifkan Strict-Transport-Security berdurasi satu tahun beserta preload, terapkan Content-Security-Policy yang ketat, gunakan X-Content-Type-Options: nosniff, dan atur frame-ancestors 'none'.

Mendiagnosis dan memeriksa header respons saat ini

Sebelum melakukan perubahan konfigurasi pada server, periksa header respons HTTP yang aktif menggunakan perintah curl -IL atau alat pemindai keamanan otomatis. Identifikasi di mana terminasi TLS dan injeksi header berlangsung: pada server asal (Nginx, Apache), reverse proxy, atau edge CDN agar header tidak terhapus di tengah jalan.

Menerapkan Strict-Transport-Security (HSTS) secara bertahap dan aman

HSTS memaksa peramban untuk hanya berkomunikasi melalui koneksi HTTPS yang aman, sehingga meniadakan potensi serangan man-in-the-middle (MitM). Pada tahap uji coba awal, gunakan max-age=86400 (satu hari). Setelah seluruh subdomain dan aset berfungsi stabil di HTTPS, alihkan ke konfigurasi produksi: max-age=31536000; includeSubDomains; preload.

Merancang kebijakan Content Security Policy (CSP) yang kokoh

CSP membatasi secara ketat sumber daya mana saja yang diizinkan mengeksekusi skrip di dalam peramban. Mulailah dengan header Content-Security-Policy-Report-Only untuk mencatat pelanggaran tanpa mengganggu fungsionalitas situs. Mulai dari default-src 'self', manfaatkan token acak (nonce) atau hash SHA-256 untuk menggantikan 'unsafe-inline', dan kunci frame-ancestors.

Mencegah serangan Clickjacking, MIME-sniffing, dan kebocoran referrer

Cegah pihak tidak bertanggung jawab menyematkan situs Anda ke dalam iframe tersembunyi dengan menyetel frame-ancestors 'none' di dalam CSP serta X-Frame-Options: DENY untuk peramban lawas. Gunakan X-Content-Type-Options: nosniff untuk memblokir penafsiran tipe MIME yang tidak aman dan terapkan Referrer-Policy: strict-origin-when-cross-origin.

Implementasi tingkat web server dan verifikasi sintaksis

Pada Nginx, definisikan aturan di dalam blok server HTTPS menggunakan direktif add_header beserta parameter always (contoh: add_header X-Content-Type-Options "nosniff" always;) agar header tetap terkirim saat respons kesalahan 4xx atau 5xx terjadi. Pada Apache, gunakan Header always set. Uji sintaksis dengan nginx -t dan muat ulang layanan dengan aman.

Header keamanan: Kontrol HTTPS, CSP, perlindungan clickjacking, MIME, referrer, dan isolasi browser.

Mulai audit gratis →

Pertanyaan

Pertanyaan yang Sering Diajukan

Apakah HSTS preload bisa langsung diaktifkan di domain utama sejak awal?

Tidak disarankan. Mulailah dengan max-age=86400 dan verifikasi bahwa seluruh subdomain dan API dapat diakses melalui HTTPS sebelum mendaftarkan domain Anda ke hstspreload.org.

Bagaimana cara menerapkan CSP tanpa merusak integrasi skrip pihak ketiga?

Gunakan header Content-Security-Policy-Report-Only terlebih dahulu untuk merekam sumber eksternal yang sah, kemudian berikan nonce atau hash kriptografis sebelum mengaktifkan penegakan blokir.