Defaults.Exposed › Perbaikan › HSTS (Strict-Transport-Security)
Cara memperbaiki HSTS (Strict-Transport-Security)
HSTS adalah instruksi satu baris yang diberikan website Anda kepada setiap browser: 'selalu kembali ke saya melalui koneksi aman dan terenkripsi — jangan pernah yang tidak aman.' Tanpanya, gembok Anda bisa diam-diam dilucuti di WiFi bersama, dan kunjungan pertama ke website Anda pun terekspos.
Intinya bagi bisnis Anda: Memiliki HTTPS (gembok) tidak sama dengan menegakkannya. Tanpa HSTS, penyerang di WiFi yang sama dengan pelanggan Anda bisa diam-diam menurunkan koneksi ke HTTP biasa yang tidak terenkripsi — menangkap login, detail kartu, dan data formulir sementara pelanggan tidak melihat ada yang salah. Sertifikat SSL Anda, yang mungkin Anda bayar, dilewati begitu saja. Perbaikannya gratis dan butuh sekitar 15 menit bagi siapa pun yang menjalankan website Anda.
Kerugian yang dapat ditimbulkan
- Pelanggan di kafe, hotel, bandara, atau konferensi WiFi bisa membiarkan koneksi mereka ke website Anda diturunkan secara diam-diam dan data mereka dibaca — tanpa peringatan di layar mereka.
- Anda sudah membayar untuk HTTPS dan memiliki gembok, tapi tanpa HSTS penyerang bisa mengelilinginya begitu saja; sertifikat memberikan rasa aman yang palsu.
- Kunjungan pertama ke website Anda (sebelum pengalihan ke HTTPS) adalah titik lemah yang ditarget penyerang — HSTS adalah yang menutupnya untuk setiap kunjungan kembali.
- Kuesioner keamanan, formulir asuransi siber, atau daftar periksa pembeli perusahaan menandai 'tidak ada HSTS' dan menghentikan kesepakatan sampai diperbaiki.
- Atur nilainya salah (terlalu pendek) dan Anda mendapat yang terburuk dari dua dunia: terlihat sudah dikonfigurasi tapi hampir tidak memberikan perlindungan nyata.
Mengapa ini penting. HTTPS melindungi koneksi setelah dienkripsi — tapi tidak memaksa browser untuk menggunakannya. Penyerang mengeksploitasi celah itu dengan 'SSL stripping': di jaringan bersama mana pun mereka diam-diam menjaga pengunjung pada HTTP yang tidak aman, membaca segalanya. HSTS memberi tahu browser untuk menolak HTTP biasa untuk domain Anda sepenuhnya, untuk waktu yang lama, sehingga celah menutup setelah kunjungan pertama. Ini adalah satu response header, gratis untuk ditambahkan, dan dalam penilaian kami bernilai poin nyata karena nilai yang hilang atau terlalu pendek membiarkan setiap pengunjung di WiFi publik terekspos.
Penjelasan dalam bahasa sederhana
Anda hampir pasti memiliki HTTPS — gembok kecil di bilah browser. Bagus. Tapi inilah bagian yang hampir tidak pernah diberitahukan kepada siapa pun: memiliki HTTPS tidak sama dengan menegakkannya.
HTTPS membuat koneksi dienkripsi setelah browser memutuskan untuk menggunakannya. HSTS — singkatan dari HTTP Strict Transport Security — adalah instruksi yang membuat browser selalu menggunakannya. Ini adalah satu baris tak terlihat yang dikirimkan website Anda kepada setiap pengunjung yang mengatakan, intinya:
“Mulai sekarang, untuk domain saya, hanya pernah bicara dengan saya melalui koneksi aman. Jangan pernah yang tidak aman. Bahkan jangan coba.”
Browser mengingat itu dan mematuhinya selama yang Anda katakan — biasanya setahun. Setelah kunjungan aman pertama pengunjung, browser mereka akan langsung menolak memuat website Anda melalui HTTP biasa yang tidak terenkripsi, bahkan jika sesuatu mencoba memaksanya.
Tanpa HSTS, aturan “selalu gunakan versi aman” itu tidak ada — dan penyerang tahu persis cara mengeksploitasi celah itu.
Dampak finansial yang perlu diketahui
Berikut adalah skenario nyata sehari-hari. Kami tidak menyebut nama bisnis nyata; ini adalah ilustrasi bagaimana celah itu digunakan.
-
Checkout di kedai kopi. Pelanggan membuka toko Anda di WiFi kafe dan pergi untuk checkout. Penyerang di jaringan yang sama menjalankan alat gratis yang terkenal yang menjaga pelanggan pada HTTP biasa alih-alih HTTPS. Pelanggan melihat apa yang tampak seperti website normal Anda — tidak ada peringatan, tidak ada gembok yang rusak di tempat yang akan mereka lihat — dan mengetikkan detail kartu mereka. Penyerang membaca setiap penekanan tombol. Sertifikat SSL Anda tidak melakukan apa pun, karena koneksi tidak pernah dibiarkan menjadi aman sejak awal.
-
Karyawan yang bepergian. Anggota staf masuk ke panel admin atau webmail Anda dari hotel atau bandara. Trik downgrade yang sama menangkap nama pengguna dan kata sandi mereka. Sekarang penyerang memiliki cara masuk ke bisnis Anda — bukan karena kebijakan kata sandi Anda lemah, tapi karena halaman login bisa diakses melalui HTTP yang tidak aman.
-
Kesepakatan yang terhenti. Pelanggan yang lebih besar mengirimkan kuesioner keamanan standar mereka sebelum menandatangani. Satu baris menanyakan: “Apakah website Anda menerapkan HTTPS melalui HSTS?” Kontak IT Anda harus menjawab “tidak,” dan proses pengadaan berhenti sementara Anda bergegas memperbaiki pengaturan gratis 15 menit yang sekarang terlihat seperti tanda merah di depan pembeli.
-
Pemeriksaan asuransi siber atau kepatuhan. Pemindaian penanggung asuransi, atau auditor yang meninjau postur perlindungan data Anda, menandai header yang hilang. Enkripsi data pribadi adalah harapan eksplisit berdasarkan aturan perlindungan data (GDPR Pasal 32), dan “kami memiliki sertifikat tapi tidak menegakkannya” adalah tempat yang lemah untuk berdiri.
-
Rasa aman yang palsu. Anda membayar SSL, gembok muncul, dan semua orang mengasumsikan website aman. Sebagian besar — sampai pelanggan berada di jaringan bersama, yang persis saat mereka paling rentan dan paling tidak mungkin menyadari ada yang salah.
Benang merahnya: biayanya bukan abstrak. Ini adalah kartu atau login pelanggan nyata, ditangkap di saat yang paling buruk, tanpa alarm yang berbunyi.
Penjelasan teknis
Ketika browser meminta halaman dari website Anda, server Anda mengirimkan kembali halaman ditambah beberapa “header” tak terlihat — instruksi ekstra yang dibaca browser tapi tidak pernah dilihat pengunjung. HSTS adalah salah satu header itu:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Tiga bagian yang penting:
max-age— berapa lama (dalam detik) browser harus mengingat untuk memaksa HTTPS.31536000adalah satu tahun. Ini adalah inti dari semuanya: terlalu pendek dan hampir tidak membantu.includeSubDomains— perluas aturan ke setiap subdomain (shop.,app.,mail., dan seterusnya), bukan hanya alamat utama Anda.preload— daftarkan domain Anda ke daftar utama yang built-in ke browser, sehingga perlindungan berlaku bahkan pada permintaan pertama pengunjung, sebelum mereka pernah melihat website Anda.
Mengapa “kunjungan pertama” penting
HSTS memiliki satu keterbatasan inheren: browser hanya mematuhi aturan setelah ia melihat header setidaknya sekali. Jadi koneksi pertama pengunjung baru masih jendela eksposur kecil. Dua hal mempersempitnya: pengalihan HTTP-ke-HTTPS (yang membawa mereka ke versi aman dengan cepat) dan preload (yang menghilangkan jendela sepenuhnya).
Seperti apa “baik” dan cara penilaiannya
Pemeriksaan kami membaca header langsung Anda dan menilai max-age:
| Nilai max-age | Artinya | Hasil |
|---|---|---|
| 1 tahun atau lebih (≥ 31536000) | Sangat baik — pengaturan yang direkomendasikan | Nilai penuh |
| 6 bulan atau lebih (≥ 15768000) | Baik, tapi tidak satu tahun penuh | Sebagian |
| 1 hari atau lebih (≥ 86400) | Lemah — terlalu pendek untuk diandalkan | Rendah / sebagian |
| Di bawah 1 hari, atau tidak ada header | Secara efektif tidak ada perlindungan | Gagal (tingkat keparahan tinggi) |
Jadi header yang ada tapi diatur ke beberapa menit diperlakukan sebagai gagal — terlihat dikonfigurasi tapi tidak melakukan tugasnya. Targetkan satu tahun.
Cara memperbaikinya (gratis, ~15 menit)
Berikan bagian ini kepada siapa pun yang menjalankan website Anda — orang IT, pengembang web, atau dukungan hosting. Perbaikannya gratis. Ini adalah satu header, atau toggle di platform hosting Anda. Tidak ada yang perlu dibeli.
Satu aturan urutan penting terlebih dahulu: HSTS bersifat lengket — setelah diaktifkan, browser akan menolak HTTP biasa untuk domain Anda selama max-age penuh. Jadi konfirmasi HTTPS berfungsi dengan benar di website utama Anda dan setiap subdomain sebelum mengaktifkannya secara luas. Jalur aman adalah: uji dengan nilai pendek → konfirmasi tidak ada yang rusak → naikkan ke satu tahun.
Langkah 1 — Pastikan HTTPS sudah berfungsi di mana-mana
Kunjungi website Anda dan subdomain utama melalui https:// dan konfirmasi mereka dimuat dengan bersih dengan sertifikat yang valid. Juga konfirmasi permintaan http:// biasa dialihkan ke https://. (Jika tidak, perbaiki pengalihan HTTP-ke-HTTPS terlebih dahulu — HSTS mengasumsikannya sudah ada.)
Langkah 2 — Tambahkan header (pilih platform Anda)
Cloudflare (atau CDN serupa): Ini yang paling mudah. Pergi ke SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) dan aktifkan. Atur Max-Age ke 6 bulan atau 12 bulan, dan aktifkan “Apply HSTS policy to subdomains” setelah Anda yakin semua subdomain sudah menggunakan HTTPS.
Nginx: tambahkan di dalam blok HTTPS server Anda:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Apache: pastikan mod_headers diaktifkan, lalu tambahkan ke virtual host HTTPS Anda:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Microsoft IIS: tambahkan ke web.config di dalam <customHeaders>:
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
Catatan Google Workspace / Microsoft 365: ini mengaktifkan email Anda, bukan hosting website Anda — HSTS diatur di mana pun website publik Anda benar-benar berada (CDN, server web, atau website builder Anda), bukan di admin Workspace/365.
Langkah 3 — Uji kecil, lalu komit
Mulai dengan max-age=300 (5 menit). Konfirmasi website masih dimuat dengan sempurna di mana-mana. Kemudian naikkan ke max-age=31536000 (satu tahun). Itulah pengaturan nilai penuh.
Langkah 4 (opsional, standar emas) — preload
Setelah Anda yakin dan telah menjalankan header satu tahun dengan includeSubDomains untuk sementara, Anda bisa mengirimkan domain Anda di hstspreload.org untuk ditanamkan ke browser. Ini menutup jendela kunjungan pertama sepenuhnya. Perlakukan sebagai komitmen yang disengaja — menghapus domain dari daftar itu lambat.
Kesalahan umum
- Mengatur
max-ageterlalu pendek. Nilai beberapa menit atau jam terlihat dikonfigurasi tapi memberikan hampir tidak ada perlindungan — dan pemeriksaan kami memperlakukan apa pun di bawah satu hari sebagai gagal. Gunakan satu tahun. - Mengaktifkan
includeSubDomainssebelum subdomain siap untuk HTTPS. Jika subdomain tidak sepenuhnya menggunakan HTTPS, aturan lengket dapat membuatnya tidak dapat dijangkau pengunjung. Dapatkan setiap subdomain ke HTTPS terlebih dahulu. - Menambahkan HSTS tapi tidak memiliki pengalihan HTTP-ke-HTTPS. HSTS mengasumsikan pengunjung mencapai versi aman; tanpa pengalihan, kunjungan pertama tidak perlu terekspos. Perbaiki keduanya bersama-sama.
- Melompat langsung ke
preloaduntuk “menjadi menyeluruh.” Preload sulit untuk dibatalkan. Dapatkan secara bertahap setelah header satu tahun yang stabil — jangan terburu-buru. - Mengasumsikan gembok berarti Anda sudah terlindungi. Gembok dan HSTS adalah hal yang berbeda. Anda bisa memiliki sertifikat yang sempurna dan masih gagal pemeriksaan ini.
FAQ
Kami sudah memiliki HTTPS dan gembok muncul. Bukankah itu sudah cukup?
Tidak — dan ini adalah kesalahpahaman tunggal yang paling umum. Gembok berarti koneksi BISA dienkripsi; ia tidak memaksa browser untuk menggunakan versi yang terenkripsi. Tanpa HSTS, penyerang di jaringan yang sama bisa menjaga pengunjung pada HTTP biasa (disebut SSL stripping) dan membaca semua yang mereka ketikkan, sementara pelanggan melihat website yang tampak normal. HSTS adalah instruksi yang membuat 'hanya terenkripsi' menjadi wajib. HTTPS tanpa HSTS adalah pintu terkunci yang sebenarnya tidak terkunci.
Apakah ini mahal atau berisiko untuk diaktifkan?
Perbaikannya sendiri gratis — ini adalah satu baris di server web Anda atau toggle di CDN Anda — dan butuh sekitar 15 menit. Satu peringatan nyata: HSTS bersifat lengket. Setelah browser melihatnya, ia akan menolak HTTP biasa untuk domain Anda selama yang Anda tentukan. Jadi Anda harus yakin HTTPS berfungsi di website utama Anda DAN setiap subdomain sebelum mengaktifkannya secara luas. Mulai dengan nilai uji yang pendek, konfirmasi tidak ada yang rusak, kemudian naikkan ke satu tahun. Dilakukan dalam urutan itu, risikonya diabaikan.
Seperti apa 'baik' itu sebenarnya?
max-age setidaknya satu tahun (31536000 detik). Pemeriksaan kami memberikan nilai penuh pada satu tahun atau lebih, nilai sebagian pada enam bulan, lemah/sebagian pada satu hari, dan memperlakukan apa pun di bawah satu hari sebagai secara efektif tidak ada. Pengaturan terkuat juga menambahkan includeSubDomains (mencakup shop.yoursite.com, app.yoursite.com, dll.) dan preload (menanamkan perlindungan ke browser sehingga bahkan kunjungan pertama pun aman).
Apa itu 'preload' dan apakah kami membutuhkannya?
HSTS hanya melindungi pengunjung SETELAH browser mereka telah melihat header setidaknya sekali — jadi kunjungan pertama pengunjung baru masih jendela kecil. Daftar preload HSTS, yang built-in ke Chrome, Firefox, Safari, dan Edge, menutup jendela itu dengan mengirimkan domain Anda ke browser terlebih dahulu. Ini opsional dan sedikit komitmen yang lebih besar (penghapusan lambat), tapi ini adalah standar emas. Untuk sebagian besar bisnis kecil, max-age satu tahun dengan includeSubDomains sudah merupakan hasil yang kuat dan aman; preload adalah langkah ekstra setelah Anda stabil.
Kami menggunakan Squarespace / Wix / Shopify — apakah kami bahkan perlu melakukan sesuatu?
Sebagian besar website builder yang sepenuhnya dihosting (Squarespace, Wix, Shopify, dan sejenisnya) menerapkan HTTPS dan sering mengatur HSTS untuk Anda secara otomatis — jadi Anda mungkin sudah lulus tanpa perlu melakukan apa pun. Pengecualiannya adalah ketika Anda menggunakan domain kustom atau CDN di depan website Anda; maka pengaturan bisa terlewat. Jalankan pemeriksaan: jika lulus, Anda sudah selesai. Jika ditandai, perbaikannya adalah toggle di pengaturan SSL/keamanan platform Anda, atau satu baris di CDN Anda.
Jika kami tidak memperbaikinya, apakah itu menurunkan nilai kami?
Ya. HSTS adalah pemeriksaan keamanan web yang dinilai, bukan informatif — header yang hilang atau terlalu pendek menggerus poin dan dinilai tingkat keparahan tinggi, karena secara langsung mengekspos data pengunjung Anda di jaringan bersama. Ini juga salah satu poin yang paling murah untuk dipulihkan: satu header gratis, sekitar 15 menit pekerjaan.