Security Header yang Saya Aktifkan di Website Klien
Set header HTTP yang praktis untuk situs bisnis: HTTPS, HSTS, nosniff, frame options, referrer policy, dan apa yang sebaiknya ditunda di hari pertama.
Daftar isi
Kebanyakan situs klien tidak butuh WAF custom di hari pertama. Yang mereka butuhkan adalah header HTTP yang membosankan supaya browser berhenti menebak soal HTTPS, framing, dan tipe konten.
Saya menambahkan ini setelah sertifikat valid—bukan sebagai pengganti update, backup, atau password admin yang waras.
Daftar pendek
| Header | Alasan |
|---|---|
| Strict-Transport-Security | Memaksa HTTPS setelah kunjungan aman pertama |
| X-Content-Type-Options: nosniff | Menghentikan MIME sniffing |
| Referrer-Policy | Membatasi kebocoran URL ke pihak ketiga |
| X-Frame-Options atau CSP frame-ancestors | Mengurangi clickjacking |
| Permissions-Policy | Mematikan kamera/mic/geolokasi yang tidak dipakai |
HSTS, dengan hati-hati
Strict-Transport-Security: max-age=15552000; includeSubDomains masuk akal setelah semua subdomain yang penting sudah melayani HTTPS.
Jangan aktifkan preload di domain baru sampai Anda yakin host email dan staging tidak akan rusak. Kesalahan preload menyakitkan untuk dibatalkan.
Yang biasanya saya tunda saat launch
Content-Security-Policy yang ketat itu berharga, tapi merusak script inline, tag manager, embed peta, dan page builder jika Anda menyalin template secara membabi buta. Mulai dengan Content-Security-Policy-Report-Only, pantau pelanggaran, baru enforce.
Lewati juga:
- menyembunyikan banner server sebagai satu-satunya tugas “keamanan”;
- plugin keamanan yang memindai setiap page view dan merusak TTFB;
- memblokir Googlebot atas nama hardening.
Di mana mengaturnya
- Apache:
Header setdi.htaccessatau vhost, setelahmod_headersaktif. - Nginx:
add_headerdi blok server HTTPS—ingat header itu tidak selalu terwariskan seperti yang orang kira. - Cloudflare: Transform Rules atau snippet konfigurasi, dan jangan menduplikasi nilai yang bentrok dari origin dan edge.
Cek respons live:
curl -sI https://example.com | grep -iE 'strict-transport|content-type-options|referrer-policy|frame-options|permissions-policy'
Verifikasi di browser
Buka DevTools → Network → dokumen → Response Headers. Lalu muat homepage, satu form, dan satu peta atau video tertanam. Jika widget hilang, header terlalu ketat untuk halaman itu—longgarkan direktif tersebut, jangan hapus seluruh set.