Bagaimana BBC meluncurkan HSTS untuk keamanan dan performa yang lebih baik.

BBC meluncurkan HSTS untuk situs mereka guna meningkatkan keamanan dan performa. Cari tahu artinya, dan bagaimana HSTS dapat membantu Anda.

Adopsi HTTPS terus meningkat dalam beberapa tahun terakhir. Berdasarkan Web Almanac HTTP Archive 2021, sekitar 91% dari semua permintaan untuk desktop dan seluler ditayangkan melalui HTTPS. HTTPS tidak hanya ada di sini untuk digunakan, melainkan juga prasyarat yang diperlukan untuk menggunakan fitur seperti Pekerja Layanan dan protokol modern seperti HTTP/2 dan HTTP/3.

Baru-baru ini, Neil Craig—seorang Lead Technical Architect di BBC—menyulitkan bahwa HTTP Strict Transport Security (HSTS) diluncurkan secara perlahan untuk bbc.com. Mari kita cari tahu apa artinya bagi BBC, dan apa artinya bagi Anda.

Permasalahan

Server web sering memproses permintaan pada port 80 dan 443. Port 80 adalah untuk permintaan HTTP yang tidak aman, sedangkan 443 adalah untuk HTTPS yang aman. Hal ini dapat menimbulkan masalah. Hal ini dapat menimbulkan masalah. Hal ini dapat terjadi karena saat Anda memasukkan alamat ke kolom URL tanpa awalan protokol https://—seperti yang cenderung dilakukan oleh kebanyakan pengguna—beberapa browser akan mengarahkan traffic ke versi HTTP situs yang tidak aman, karena alasan lama (meskipun tidak selalu).

Cara umum untuk memastikan pengguna tidak mengakses versi situs yang tidak aman adalah dengan melakukan pengalihan HTTP-ke-HTTPS untuk semua permintaan. Cara ini memang berhasil, tetapi ini akan memulai rantai peristiwa berikut:

  1. Server menerima permintaan melalui HTTP.
  2. Server melakukan pengalihan untuk menuju ke HTTPS yang setara dengan sumber daya yang diminta.
  3. Server melalui HTTPS harus menegosiasikan koneksi aman dengan browser.
  4. Konten dimuat seperti biasa.

Meskipun pengalihan berfungsi dengan baik, pengalihan dapat salah dikonfigurasi dengan cara yang masih memungkinkan akses ke versi situs yang tidak aman. Meskipun semuanya telah dikonfigurasi dengan benar, masih ada masalah keamanan yang membuat pengguna tetap terhubung melalui HTTP yang tidak aman selama fase pengalihan. Hal ini mengekspos pengguna pada kemungkinan terjadinya serangan man in the middle yang berbahaya.

Masuki HSTS

Dukungan Browser

  • 4
  • 12
  • 4
  • 7

Sumber

HSTS ditentukan oleh header respons HTTP Strict-Transport-Security untuk permintaan HTTPS. Saat ditetapkan, kunjungan kembali ke situs akan memicu pengalihan khusus yang dikenal sebagai "307 Internal Redirect", yaitu saat browser menangani logika pengalihan, bukan server. Hal ini mencegah permintaan disadap, karena tidak pernah keluar dari browser, sehingga lebih aman. Sebagai bonus tambahan, jenis pengalihan ini sangat cepat, sehingga latensi yang terlihat selama hop HTTP-ke-HTTPS akan dihilangkan.

Pengalihan internal 307 dari HTTP ke HTTPS, yang dipicu oleh header HSTS. Pengalihan 307 hanya memerlukan waktu 2 milidetik.

Serupa dengan sintaksis dengan perintah max-age Cache-Control, header HSTS menentukan perintah max-age. Perintah ini menggunakan nilai dalam detik yang menentukan durasi kebijakan berlaku:

Strict-Transport-Security: max-age=3600

Pada contoh di atas, kebijakan hanya akan berlaku selama satu jam.

Menerapkan HSTS

Kelemahan utama dari menerapkan HSTS adalah jika Anda belum siap untuk memperlakukan origin Anda sebagai sangat aman. Misalnya, Anda memiliki sejumlah subdomain tempat Anda menerima resource, tetapi mungkin tidak semuanya aman. Dalam skenario ini, header HSTS dapat merusak situs Anda.

BBC mengambil pendekatan yang tepat untuk men-deploy HSTS. Seperti yang disebutkan Neil Craig dalam tweet-nya, nilai awal yang ditetapkan untuk bbc.com adalah max-age=10.

Pendekatan ini berarti bahwa kebijakan pada awalnya hanya berlaku selama sepuluh detik. Hal ini tidak memberikan banyak manfaat, tetapi sebaiknya kita rasakan apakah ada masalah saat menerapkan HSTS. Seiring berjalannya waktu, Anda dapat meningkatkan kebijakan secara bertahap dan melihat apakah terjadi masalah. Pada saat penulisan ini, bbc.com menentukan kebijakan HSTS untuk max-age=86400, dan kebijakan tersebut hampir pasti akan meningkat seiring waktu.

Anda tentu tidak ingin keluar dari gerbang dengan nilai max-age yang panjang saat men-deploy HSTS. Anda tiba-tiba berupaya memperbaiki masalah sementara pengguna mengalami masalah. Mulai dari yang kecil, dan tingkatkan seiring waktu. Jika Anda yakin semuanya baik-baik saja, Anda dapat menyetel perintah max-age untuk jangka waktu yang lebih lama. Sebaiknya tetapkan max-age ke satu atau dua tahun setelah diluncurkan sepenuhnya.

Dapatkan navigasi awal yang lebih aman dan cepat dengan daftar pramuat HSTS

Kebijakan HSTS hanya berlaku setelah kunjungan pertama ke suatu situs, sehingga manfaatnya tidak ada untuk kunjungan pertama ke situs. Tindakan ini tetap memerlukan pengalihan yang tidak aman. Namun, Anda dapat melakukan pramuat kebijakan HSTS dengan mengirimkan situs Anda ke daftar pramuat HSTS, yang merupakan daftar hardcode dari situs yang diketahui browser hanyalah HTTPS. Ketika situs Anda ada di daftar pramuat, kunjungan pertama juga terlindungi dan latensi pengalihan HTTP-ke-HTTPS melalui HSTS akan seketika.

Cobalah sendiri

Jika BBC merasa nyaman menguji HSTS, kemungkinan besar Anda dapat melakukan hal yang sama untuk situs Anda. Cobalah untuk situs Anda, dan—jika ingin meningkatkannya—tambahkan ke daftar pramuat HSTS jika Anda yakin tidak ada bug untuk memberi pengguna pengalaman yang lebih aman dan lebih cepat.