Penyusun Header Keamanan
Enam header sisanya, beserta apa yang rusak kalau dinyalakan
Susun Referrer-Policy, Permissions-Policy, HSTS, COOP, COEP, dan CORP untuk Nginx atau Apache/LiteSpeed. Setiap pilihan disertai harga yang harus dibayar — mana yang berhenti bekerja setelah header itu aktif.
Pasang satu kelompok header dulu, muat ulang server, lalu buka situs Anda dan periksa Console browser. Header yang merusak sesuatu hampir selalu meninggalkan pesan di situ — dan memasang semuanya sekaligus membuat Anda tidak tahu mana yang menyebabkannya.
Seluruh perhitungan berjalan di browser Anda. Alamat IP, nama interface, dan password yang Anda masukkan tidak pernah dikirim ke server CoreNet.
Yang disusun
Enam header yang belum punya tools sendiri di katalog ini: Referrer-Policy, Permissions-Policy, Strict-Transport-Security (HSTS), Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy, dan Cross-Origin-Resource-Policy.
Outputnya untuk Nginx atau untuk Apache dan LiteSpeed. CSP dan CORS tidak ada di sini karena keduanya sudah punya halaman sendiri — masing-masing menuntut penjelasan sepanjang halaman, dan menyatukan delapan header dalam satu formulir hanya membuat semuanya dijelaskan setengah-setengah.
Header keamanan tidak pernah gratis
Ini yang membedakan tool ini, dan alasan ia ditulis.
Generator header lain menyalin nilai dari dokumentasi lalu menyerahkan sisanya kepada Anda. Padahal justru di situ persoalannya: yang mengeraskan situs juga mematikan sesuatu. Yang tidak tahu apa yang dimatikannya akan menghapus seluruh blok header minggu depan saat ada yang rusak — bukan mencari satu baris yang salah.
Jadi setiap pilihan di sini keluar bersama harga yang harus dibayar, ditulis di dalam outputnya sendiri supaya tersimpan bersama konfigurasinya.
Tiga yang paling sering merusak situs
COEP require-corp yang paling ganas. Ia menolak memuat apa pun dari luar yang tidak menyatakan diri boleh disematkan — dan itu berarti font Google, gambar dari CDN, peta, video YouTube, dan script pihak ketiga berhenti muat, semuanya sekaligus. Nyalakan hanya bila Anda memang membutuhkan SharedArrayBuffer. Untuk situs perusahaan biasa, jawabannya hampir selalu tidak.
COOP same-origin memutus window.opener. Akibatnya alur yang mengandalkan jendela sembulan rusak: login lewat Google atau Facebook, pembayaran yang membuka popup, widget yang menunggu balasan dari jendela anaknya. Bila situs Anda memakai salah satunya, same-origin-allow-popups yang benar — dan itulah default di tool ini.
CORP same-origin melarang situs lain menyematkan file dari domain Anda. Kedengarannya bagus sampai Anda menyadari itu termasuk preview link di WhatsApp dan Facebook, serta subdomain Anda sendiri. Untuk situs yang ingin dibagikan, same-site hampir selalu pilihan yang benar.
HSTS preload tidak dapat dibatalkan cepat
Perlu paragraf sendiri karena akibatnya paling permanen di antara semuanya.
preload mendaftarkan domain Anda ke daftar default yang ikut terpasang di dalam browser. Setelah masuk, mengeluarkannya butuh berbulan-bulan — menunggu rilis browser berikutnya, di semua browser.
Selama itu, setiap subdomain wajib berjalan HTTPS. Satu panel internal yang masih HTTP, satu alat ukur lama yang tidak bisa dipasangi sertifikat, satu perangkat jaringan dengan interface web default — semuanya menjadi tidak dapat diakses, dan tidak ada yang dapat Anda lakukan dari sisi server untuk memperbaikinya.
Urutan yang aman: max-age=300 dulu, pastikan tidak ada yang rusak, naikkan bertahap sampai satu tahun, baru pertimbangkan preload. Tool ini juga memperingatkan bila max-age Anda di bawah satu tahun sementara preload dinyalakan — pengajuan ke hstspreload.org akan ditolak.
always pada Nginx, dan kenapa ia sering terlupa
Pada Nginx, add_header tanpa always tidak mengirim header pada balasan error.
Akibatnya halaman 404 dan 500 menjadi satu-satunya halaman di situs Anda yang tidak terlindungi — dan justru halaman error yang paling sering menampilkan isi tak terduga. Tool ini selalu menuliskan always, dan menyebutkan alasannya di dalam output.
Hal yang sama berlaku untuk Header always set pada Apache dan LiteSpeed.
Memasangnya satu kelompok dulu
Nasihat yang paling menghemat waktu, dan yang paling sering dilanggar.
Pasang satu kelompok header, muat ulang server, buka situs, lihat Console browser. Header yang merusak sesuatu hampir selalu meninggalkan pesan di sana — dan memasang keenamnya sekaligus membuat Anda tahu ada yang rusak tanpa tahu mana penyebabnya.
Memastikan header benar-benar terpasang:
curl -sI https://domain-anda.id | grep -i -E "referrer|permissions|strict-transport|cross-origin"Header yang tidak muncul di output itu tidak berlaku, apa pun yang tertulis di file konfigurasi. Salah tempat blok — di dalam location yang tidak pernah tercapai, atau di .htaccess pada folder yang bukan document root — adalah sebab paling sering.
Pertanyaan yang sering diajukan
Kenapa defaultnya tidak yang paling ketat? Karena default paling ketat akan merusak situs kebanyakan orang pada instalasi pertama, dan yang situsnya rusak menghapus seluruh bloknya alih-alih mencari satu baris. Default di sini adalah yang aman bagi hampir semua situs; yang berisiko dimulai dari mati.
Permissions-Policy saya panjang sekali di contoh lain, kenapa di sini pendek? Daftar lengkapnya memang jauh lebih panjang, tetapi hampir seluruh sisanya tidak pernah relevan bagi situs perusahaan. Delapan yang ada di sini yang benar-benar perlu dipikirkan; menambah tiga puluh nama lain hanya membuat formulirnya menakutkan tanpa menambah keamanan.
Apakah header ini menggantikan CSP? Tidak, dan tidak ada satu pun di antaranya yang mendekati kegunaan CSP. Bila Anda hanya punya waktu untuk satu header, kerjakan Content-Security-Policy lebih dulu — yang di sini pelengkapnya.
Apakah data saya dikirim ke server? Tidak. Seluruh penyusunan berjalan di browser Anda.