Kebijakan Perujuk default baru untuk Chrome - strict-origin-when-cross-origin

Maud Nalpas
Maud Nalpas

Sebelum kita mulai:

  • Jika Anda tidak yakin dengan perbedaan antara "situs" dan "origin", baca artikel Memahami "situs yang sama" dan "origin yang sama".
  • Header Referer tidak memiliki R karena ada kesalahan ejaan asli dalam spesifikasi. Header Referrer-Policy dan referrer di JavaScript serta DOM dieja dengan benar.

Ringkasan

  • Browser berkembang menuju kebijakan perujuk default yang meningkatkan privasi, untuk memberikan penggantian yang baik saat situs tidak memiliki kebijakan yang ditetapkan.
  • Chrome berencana untuk mengaktifkan strict-origin-when-cross-origin secara bertahap sebagai kebijakan default dalam versi 85. Hal ini dapat memengaruhi kasus penggunaan yang mengandalkan nilai perujuk dari asal lain.
  • Ini adalah setelan default baru, tetapi situs tetap dapat memilih kebijakan yang mereka inginkan.
  • Untuk mencoba perubahan di Chrome, aktifkan flag di chrome://flags/#reduced-referrer-granularity. Anda juga dapat melihat demo ini untuk melihat penerapan perubahannya.
  • Selain kebijakan perujuk, cara browser menangani perujuk dapat berubah. Jadi, pantau terus.

Apa yang berubah dan mengapa?

Permintaan HTTP dapat menyertakan header Referer opsional, yang menunjukkan URL halaman asal atau halaman web tempat permintaan dibuat. Header Referer-Policy menentukan data yang disediakan di header Referer, dan untuk navigasi dan iframe di document.referrer tujuan.

Informasi yang dikirim dalam header Referer dalam permintaan dari situs Anda ditentukan oleh header Referrer-Policy yang Anda tetapkan.

Diagram: Perujuk dikirim dalam
      permintaan.
Perujuk-Kebijakan dan Perujuk.

Jika tidak ada kebijakan yang ditetapkan, kebijakan default browser akan digunakan. Situs sering kali mengikuti setelan default browser.

Untuk navigasi dan iframe, data yang ada di header Referer juga dapat diakses melalui JavaScript menggunakan document.referrer.

Hingga saat ini, no-referrer-when-downgrade telah menjadi kebijakan default yang luas di seluruh browser. Namun, sekarang banyak browser yang berada dalam tahap beralih ke default yang lebih meningkatkan privasi.

Chrome berencana untuk mengubah kebijakan default-nya dari no-referrer-when-downgrade menjadi strict-origin-when-cross-origin, mulai versi 85.

Artinya, jika tidak ada kebijakan yang ditetapkan untuk situs Anda, Chrome akan menggunakan strict-origin-when-cross-origin secara default. Perlu diperhatikan bahwa Anda tetap dapat menetapkan kebijakan pilihan Anda. Perubahan ini hanya akan berlaku pada situs yang tidak menetapkan kebijakan.

Apa arti perubahan ini?

strict-origin-when-cross-origin menawarkan lebih banyak privasi. Dengan kebijakan ini, hanya origin yang akan dikirim dalam header Referer permintaan lintas origin.

Hal ini mencegah kebocoran data pribadi yang mungkin dapat diakses dari bagian lain dari URL lengkap seperti jalur dan string kueri.

Diagram: Perujuk dikirim
      bergantung pada kebijakan, untuk permintaan lintas asal.
Rujukan terkirim (dan document.referrer) untuk permintaan lintas asal, bergantung pada kebijakan.

Contoh:

Permintaan lintas origin, dikirim dari https://site-one.example/stuff/detail?tag=red ke https://site-two.example/...:

  • Dengan no-referrer-when-downgrade: Perujuk: https://site-one.example/stuff/detail?tag=red.
  • Dengan strict-origin-when-cross-origin: Perujuk: https://site-one.example/.

Apa yang tidak berubah?

  • Seperti no-referrer-when-downgrade, strict-origin-when-cross-origin aman: tidak ada perujuk (header Referer dan document.referrer) yang ada saat permintaan dibuat dari origin HTTPS (aman) ke origin HTTP (tidak aman). Dengan cara ini, jika situs Anda menggunakan HTTPS (jika tidak, prioritaskan), URL situs Anda tidak akan bocor dalam permintaan non-HTTPS—karena siapa pun di jaringan dapat melihatnya, sehingga akan mengekspos pengguna Anda terhadap serangan man-in-the-middle.
  • Dalam origin yang sama, nilai header Referer adalah URL lengkap.

Misalnya: Permintaan asal yang sama, dikirim dari https://site-one.example/stuff/detail?tag=red ke https://site-one.example/...:

  • Dengan strict-origin-when-cross-origin: Perujuk: https://site-one.example/stuff/detail?tag=red

Apa dampaknya?

Berdasarkan diskusi dengan browser lain dan eksperimen yang dijalankan Chrome di Chrome 84, kerusakan yang terlihat oleh pengguna diperkirakan akan terbatas.

Logging atau analisis sisi server yang mengandalkan URL perujuk lengkap yang tersedia kemungkinan akan terpengaruh oleh berkurangnya tingkat perincian informasi tersebut.

Apa yang perlu Anda lakukan?

Chrome berencana untuk mulai meluncurkan kebijakan perujuk default baru pada tanggal 85 (Juli 2020 untuk beta, Agustus 2020 untuk stabil). Lihat status di entri status Chrome.

Memahami dan mendeteksi perubahan

Untuk memahami perubahan default baru yang diterapkan, Anda dapat melihat demo ini.

Anda juga dapat menggunakan demo ini untuk mendeteksi kebijakan yang diterapkan di instance Chrome yang Anda jalankan.

Uji perubahannya, dan cari tahu apakah perubahan ini akan memengaruhi situs Anda

Anda sudah dapat mencoba perubahan mulai dari Chrome 81: buka chrome://flags/#reduced-referrer-granularity di Chrome dan aktifkan tanda. Jika tanda ini diaktifkan, semua situs yang tidak memiliki kebijakan akan menggunakan default strict-origin-when-cross-origin yang baru.

Screenshot Chrome: cara
      mengaktifkan tanda chrome://flags/#Reduced-referrer-granularity.
Mengaktifkan flag.

Sekarang Anda dapat memeriksa perilaku situs dan backend Anda.

Hal lain yang harus dilakukan untuk mendeteksi dampak adalah memeriksa apakah codebase situs Anda menggunakan perujuk, baik melalui header Referer permintaan masuk di server maupun dari document.referrer di JavaScript.

Fitur tertentu pada situs Anda mungkin rusak atau berperilaku berbeda jika Anda menggunakan perujuk permintaan dari asal lain ke situs Anda (lebih khusus lagi jalur dan/atau string kueri) DAN asal ini menggunakan kebijakan perujuk default browser (yaitu tidak memiliki kebijakan yang ditetapkan).

Jika ini berdampak pada situs Anda, pertimbangkan alternatif

Jika Anda menggunakan perujuk untuk mengakses jalur lengkap atau string kueri untuk permintaan ke situs, Anda memiliki beberapa opsi:

  • Gunakan teknik dan header alternatif seperti Origin dan Sec-fetch-Site untuk perlindungan CSRF, logging, dan kasus penggunaan lainnya. Lihat Referer and Referrer-Policy: praktik terbaik.
  • Anda dapat menyelaraskan kebijakan tertentu dengan partner jika diperlukan dan transparan kepada pengguna. Kontrol akses—saat perujuk digunakan oleh situs untuk memberikan akses tertentu ke resource ke origin lain—kemungkinan demikian, meskipun dengan perubahan Chrome, origin akan tetap dibagikan di Header Referer (dan di document.referrer).

Perlu diperhatikan bahwa sebagian besar browser bergerak ke arah yang sama dalam hal perujuk (lihat default browser dan evolusinya dalam Referer and Referrer-Policy: praktik terbaik.

Menerapkan kebijakan yang jelas dan meningkatkan privasi di seluruh situs Anda

Referer apa yang harus dikirim dalam permintaan yang berasal oleh situs Anda, misalnya, kebijakan apa yang harus Anda tetapkan untuk situs tersebut?

Meskipun Chrome mempertimbangkan perubahan, sebaiknya tetapkan kebijakan eksplisit dan peningkatan privasi seperti strict-origin-when-cross-origin atau yang lebih ketat sekarang.

Tindakan ini akan melindungi pengguna Anda dan membuat perilaku situs Anda lebih dapat diprediksi di seluruh browser. Umumnya, hal ini memberi Anda kontrol, bukan membuat situs Anda bergantung pada default browser.

Lihat Referrer and Referrer-Policy: praktik terbaik untuk mengetahui detail tentang cara menetapkan kebijakan.

Tentang Chrome Enterprise

Kebijakan perusahaan Chrome ForceLegacyDefaultReferrerPolicy tersedia bagi admin IT yang ingin menerapkan kebijakan perujuk default sebelumnya sebesar no-referrer-when-downgrade di lingkungan perusahaan. Dengan demikian, perusahaan memiliki waktu tambahan untuk menguji dan mengupdate aplikasi mereka.

Kebijakan ini akan dihapus di Chrome 88.

Kirim masukan

Apakah ada masukan yang ingin Anda sampaikan atau ada yang perlu dilaporkan? Berikan masukan terkait keinginan Chrome untuk menghadirkan, atau kirimkan tweet pertanyaan Anda ke @maudnals.

Terima kasih banyak atas kontribusi dan masukan untuk semua pengulas - terutama Kaustubha Govind, David Van Cleve, Mike West, Sam Dutton, Rowan Merewood, Jxck, dan Kayce Basques.

Referensi