Bersama setiap halaman, server mengirim ke browser beberapa baris instruksi yang disebut header (headers). Sebagian header meminta browser lebih berhati-hati: hanya memakai https://, tidak mengizinkan website lain membingkai halaman Anda, tidak meneruskan alamat lengkap halaman. Header cukup dipasang sekali di .htaccess, dan melindungi semua pengunjung.
Yang akan Anda capai
- mengaktifkan HSTS, agar browser hanya membuka website lewat
https://; - menambahkan header dasar yang tidak merusak apa pun di website biasa;
- memeriksa bahwa server mengirimkannya.
Sebelum memulai
- Sertifikat SSL valid dan “Force https” aktif untuk domain dan untuk
www(lihat Sertifikat SSL gratis (Let's Encrypt) dan Redirect ke HTTPS dan www). HSTS tanpa sertifikat yang valid akan memblokir website. - Buat salinan file
.htaccess: di Enhance, tab “Files”, klik kanan pada.htaccess» “Download”. - Server NBT Host memakai Apache, yang membaca aturan dari
.htaccess. - Nama menu Enhance ditulis dalam bahasa Inggris, persis seperti di layar. Jika panel tampil dalam bahasa lain, ubah ke bahasa Inggris dari kanan atas: “My account” » “Language”.
Fungsi setiap header
| Header | Fungsi |
|---|---|
Strict-Transport-Security (HSTS) | browser mengingat, selama periode yang ditentukan, bahwa website hanya dibuka lewat https://, meskipun seseorang mengetik http:// |
X-Content-Type-Options: nosniff | browser tidak “menebak” jenis file; file yang diunggah sebagai gambar tidak bisa dijalankan sebagai script |
X-Frame-Options: SAMEORIGIN | website lain tidak bisa membingkai halaman Anda di dalam <iframe>, jadi tidak bisa menipu pengunjung agar mengklik tombol tersembunyi |
Referrer-Policy: strict-origin-when-cross-origin | saat pengunjung pindah ke website lain, website tersebut hanya tahu domain Anda, bukan alamat lengkap halaman |
Permissions-Policy | memblokir akses halaman ke kamera, mikrofon, atau lokasi, jika website tidak memakainya |
Langkah-langkah
A. Menambahkan header
- Di Enhance, buka “Websites”, website Anda, tab “Files”, lalu masuk ke
public_html. - Klik kanan pada
.htaccess» “Edit”. Jika belum ada, buat dengan “New file”. - Tambahkan di bagian akhir file:
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=31536000" "expr=%{HTTPS} == 'on'" Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "SAMEORIGIN" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" </IfModule> - Di WordPress, letakkan blok ini di luar baris
# BEGIN WordPressdan# END WordPress: isi di antara keduanya bisa ditulis ulang oleh WordPress. - Klik “Save”.
max-age=31536000 berarti satu tahun. Jika ingin mulai dengan hati-hati, isi dulu max-age=300 (5 menit), periksa website selama sehari, lalu naikkan ke satu tahun.
B. Memeriksa
- Buka website, tekan F12 (di Mac Cmd+Option+I), tab Network (Jaringan), muat ulang halaman, lalu klik baris pertama, yaitu baris halaman itu sendiri. Di Response Headers harus terlihat header yang Anda tambahkan.
- Atau, dari Terminal (Mac, Linux) atau PowerShell (Windows):
curl -I https://domeniul-tau.ro/. - Periksa halaman-halaman penting: formulir, pembayaran, peta, video yang disematkan.
Yang TIDAK boleh ditambahkan tanpa paham risikonya
includeSubDomainsdanpreloadpada HSTS. DenganincludeSubDomains, setiap subdomain tanpa sertifikat (misalnya layanan pihak ketiga diprogramari.domeniul-tau.ro) tidak bisa diakses.preloadmemasukkan domain ke daftar yang tertanam di browser, dan keluar dari daftar itu sulit, butuh berbulan-bulan. Website kecil tidak membutuhkannya.Content-Security-Policy(CSP). Ini header yang paling kuat, tetapi juga paling mudah salah: CSP yang terlalu ketat memblokir Google Analytics, font, chat, atau pembayaran. Jika ingin memakainya, mulai dengan versi yang hanya melaporkan,Content-Security-Policy-Report-Only, dan minta bantuan pembuat website Anda.X-Frame-Optionsdi website yang memang harus dibingkai oleh website Anda yang lain (misalnya formulir yang ditaruh dalam<iframe>di domain lain). Dalam kasus itu, hapus barisnya.
Jika ada kendala
- Website menampilkan “500 Internal Server Error” setelah disimpan. Ada salah ketik di blok, biasanya tanda kutip yang hilang. Hapus blok, simpan, lalu tempel lagi dengan menyalin persis (lihat Error 500 Internal Server Error dan halaman putih).
- Header tidak terlihat. Pastikan Anda menyimpan
.htaccessdi folder website (public_htmlatau folder subdomain), lalu kosongkan cache (plugin cache, Cloudflare) dan muat ulang. - Setelah HSTS, sebuah subdomain tidak bisa dibuka. Subdomain tersebut tidak punya sertifikat yang valid. Terbitkan sertifikatnya (lihat Sertifikat SSL gratis (Let's Encrypt)). Jika Anda menambahkan
includeSubDomains, hapus; browser yang sudah melihatnya akan mengingatnya sampaimax-agehabis. <iframe>dari website Anda yang lain tidak lagi dimuat. Ini efek dariX-Frame-Options. Hapus barisnya atau hubungi kami, dan kami jelaskan alternatifnya dengan CSPframe-ancestors.
