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 "asal", lihat 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 dan DOM dieja dengan benar.

Ringkasan

  • Browser berevolusi menuju kebijakan perujuk default yang meningkatkan privasi, untuk menyediakan penggantian yang baik saat situs tidak menetapkan kebijakan.
  • Chrome berencana mengaktifkan strict-origin-when-cross-origin secara bertahap sebagai kebijakan default di 85; hal ini dapat memengaruhi kasus penggunaan yang mengandalkan nilai perujuk dari asal lain.
  • Ini merupakan setelan default baru, tetapi situs tetap dapat memilih kebijakan pilihannya.
  • Untuk mencoba perubahan di Chrome, aktifkan tanda di chrome://flags/#reduced-referrer-granularity. Anda juga dapat memeriksa demo ini untuk melihat perubahan yang dilakukan.
  • Di luar kebijakan perujuk, cara browser menangani perujuk dapat berubah, jadi perhatikan hal ini.

Apa saja yang berubah dan mengapa?

Permintaan HTTP dapat menyertakan header Referer opsional, yang menunjukkan URL halaman web atau origin yang membuat permintaan tersebut. Header Referer-Policy menentukan data yang tersedia di header Referer, serta untuk navigasi dan iframe di document.referrer tujuan.

Persisnya informasi apa yang dikirim di header Referer dalam permintaan dari situs Anda ditentukan oleh header Referrer-Policy yang Anda tetapkan.

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

Jika tidak ada kebijakan yang disetel, setelan 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, banyak browser kini sudah dalam tahap beralih ke setelan default yang lebih meningkatkan privasi.

Chrome berencana mengubah kebijakan defaultnya 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 diketahui bahwa Anda tetap dapat menetapkan kebijakan pilihan Anda. Perubahan ini hanya akan berpengaruh pada situs yang tidak memiliki kebijakan yang ditetapkan.

Apa arti perubahan ini?

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

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

Diagram: Perujuk yang dikirim bergantung pada kebijakan untuk permintaan lintas origin.
Referer dikirim (dan document.referrer) untuk permintaan lintas origin, 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 tetap sama?

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

Misalnya: Permintaan origin 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 ketersediaan URL perujuk lengkap kemungkinan akan terpengaruh oleh berkurangnya perincian dalam informasi tersebut.

Apa yang perlu Anda lakukan?

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

Memahami dan mendeteksi perubahan

Untuk memahami perubahan default baru dalam praktiknya, Anda dapat melihat demo ini.

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

Uji perubahan, 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 tersebut. Jika flag ini diaktifkan, semua situs yang tidak memiliki kebijakan akan menggunakan default strict-origin-when-cross-origin baru.

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

Anda kini dapat memeriksa perilaku situs dan backend.

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

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

Jika hal ini memengaruhi situs Anda, pertimbangkan alternatif

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

  • Gunakan teknik dan header alternatif seperti Origin dan Sec-fetch-Site untuk perlindungan CSRF, logging, dan kasus penggunaan lainnya. Lihat Kebijakan Rujukan dan Perujuk: praktik terbaik.
  • Anda dapat menyelaraskan kebijakan dengan partner terkait kebijakan tertentu jika hal ini diperlukan dan transparan kepada pengguna Anda. Kontrol akses—saat perujuk digunakan oleh situs untuk memberikan akses tertentu ke resource-nya ke asal lainnya—mungkin menjadi kasus semacam ini, meskipun dengan perubahan Chrome, origin akan tetap dibagikan di Header Referer (dan di document.referrer).

Perlu diketahui bahwa sebagian besar browser bergerak ke arah yang sama dalam hal perujuk (lihat setelan default browser dan evolusinya dalam Kebijakan Referensi dan Perujuk: praktik terbaik.

Terapkan kebijakan yang jelas dan meningkatkan privasi di seluruh situs Anda

Referer apa yang harus dikirim dalam permintaan yang berasal oleh situs Anda, yaitu kebijakan apa yang harus ditetapkan untuk situs Anda?

Meskipun Chrome berubah pikiran, sebaiknya tetapkan kebijakan eksplisit yang meningkatkan privasi seperti strict-origin-when-cross-origin atau yang lebih ketat sekarang.

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

Lihat Perujuk dan Perujuk-Kebijakan: praktik terbaik untuk mengetahui detail tentang cara menetapkan kebijakan.

Tentang Chrome Enterprise

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

Kebijakan ini akan dihapus pada Chrome 88.

Kirim masukan

Ada masukan yang ingin disampaikan atau ada yang perlu dilaporkan? Berikan masukan tentang niat Chrome untuk mengirim, atau kirim tweet pertanyaan Anda ke @maudnals.

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

Referensi