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. HeaderReferrer-Policy
danreferrer
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.
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.
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 (headerReferer
dandocument.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.
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
danSec-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 didocument.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.