Menggunakan kebijakan HSTS yang kuat

Protokol teks biasa, seperti HTTP, dapat rentan terhadap serangan menguping, di mana penyerang dapat membaca konten yang ditransmisikan. Transport Layer Security (TLS) dapat mengenkripsi traffic dan membuat penyerang jauh lebih sulit menggunakan data ini jika diambil.

Namun, penyerang dapat mengakali TLS dengan memaksa koneksi terenkripsi menggunakan HTTP teks biasa. Untuk mengatasi masalah ini, Anda dapat menggunakan header respons HTTP Strict Transport Security (HSTS). HSTS memaksa browser pengguna untuk mengunjungi situs menggunakan TLS, dan tidak mengizinkannya kembali ke HTTP teks biasa selama jangka waktu tertentu.

Browser Support

  • Chrome: 4.
  • Edge: 12.
  • Firefox: 4.
  • Safari: 7.

Source

Penyebab kegagalan audit Lighthouse

Peringatan laporan Lighthouse bahwa tidak ada header respons HSTS yang ditemukan.

Audit menandai masalah berikut pada header HSTS:

  • Jika tidak ada header HSTS yang ditemukan sama sekali.
  • Jika salah satu perintah yang direkomendasikan tidak ada (max-age, includeSubDomains, preload)
  • Jika durasi untuk perintah max-age kurang dari satu tahun (31536000 detik).
  • Jika ada error sintaksis saat mengurai header, seperti perintah yang tidak diketahui.

Mengonfigurasi kebijakan HSTS yang kuat

Konfigurasi header HSTS yang optimal akan terlihat seperti berikut:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  • Direktif max-age menentukan jangka waktu browser pengguna dipaksa untuk membuka situs hanya menggunakan TLS (dalam detik). Setelah waktu berlalu, pengguna dapat membuka situs dengan HTTP biasa lagi jika tidak ada header HSTS yang disediakan oleh situs (atau pengalihan sementara dari HTTP ke HTTPS).
  • Menyetel direktif includeSubDomains akan menerapkan header di semua subdomain URL halaman yang mengirim header pada awalnya. Misalnya, header HSTS yang dikirim oleh google.com yang menyertakan direktif includeSubDomains akan menerapkan header HSTS di mail.google.com.
  • Menyetel direktif preload dan mengirimkan domain ke layanan pramuat HSTS akan mengompilasi domain ke dalam biner browser yang menggunakan daftar HSTS yang dipramuat. Hal ini berlaku untuk lebih dari Google Chrome.

Ada beberapa risiko saat meluncurkan header HSTS. Setiap fitur yang memerlukan koneksi HTTP yang tidak terenkripsi akan rusak selama waktu yang ditetapkan dalam direktif max-age. Mungkin lebih lama lagi jika perintah preload diterapkan.

Untuk mengurangi risiko yang terkait dengan peluncuran, sebaiknya gunakan pendekatan bertahap:

  1. Mulai dengan max-age kecil dan hanya tambahkan includeSubDomains (tanpa preload):

    max-age=3600; includeSubDomains
    
  2. Setelah periode tunggu (seperti satu minggu) tanpa masalah yang dilaporkan, tingkatkan max-age. Contoh:

    max-age=604800; includeSubDomains
    
  3. Jika fase awal ini berhasil selama jangka waktu yang lama (seperti tiga bulan), situs dan subdomainnya harus ditambahkan ke daftar pra-muat HSTS dan direktif preload harus ditambahkan.

    max-age=63072000; includeSubDomains; preload