Bersiaplah untuk Setelan Cookie SameSite=None; Secure baru

Kamis, 16 Januari 2020

Ini adalah postingan silang dari blog developer Chromium, yang secara khusus membahas pengaruh perubahan pada Chrome terhadap cara kerja situs Anda untuk pengguna pada masa mendatang.

Pada bulan Mei, Chrome mengumumkan model yang aman secara default untuk cookie, yang diaktifkan oleh sistem klasifikasi cookie baru (spesifikasi). Inisiatif ini adalah bagian dari upaya berkelanjutan kami dalam meningkatkan privasi dan keamanan di seluruh web.

Chrome berencana menerapkan model baru tersebut ke Chrome 80 pada bulan Februari 2020. Mozilla dan Microsoft juga telah berniat untuk menerapkan model baru ini di Firefox dan Edge, menurut jadwal masing-masing. Meskipun perubahan Chrome masih beberapa bulan lagi, penting bagi developer yang mengelola cookie untuk menilai kesiapan mereka sekarang juga. Postingan blog ini menguraikan konsep secara umum; lihat SameSite Cookies Explained di web.dev untuk panduan developer.

Situs biasanya mengintegrasikan layanan eksternal untuk iklan, rekomendasi konten, widget pihak ketiga, sematan sosial, dan fitur lainnya. Saat Anda menjelajahi web, layanan eksternal ini dapat menyimpan cookie di browser Anda, lalu mengakses cookie tersebut untuk memberikan pengalaman yang dipersonalisasi atau mengukur interaksi audiens. Setiap cookie memiliki domain yang terkait dengannya. Jika domain yang terkait dengan cookie cocok dengan layanan eksternal dan bukan situs di kolom URL pengguna, hal ini dianggap sebagai konteks lintas situs (atau "pihak ketiga").

Kasus penggunaan lintas situs yang kurang jelas mencakup situasi saat entitas yang memiliki beberapa situs menggunakan cookie di seluruh properti tersebut. Meskipun entitas yang sama memiliki cookie dan situs, situasi ini tetap dianggap sebagai konteks lintas situs atau "pihak ketiga" ketika domain cookie tidak cocok dengan situs tempat cookie diakses.

Domain situs tidak cocok dengan domain cookie

Ketika resource eksternal di halaman web mengakses cookie yang tidak cocok dengan domain situs, ini adalah konteks lintas situs atau "pihak ketiga".

Sebaliknya, akses cookie dalam konteks situs yang sama (atau "pihak pertama") terjadi jika domain cookie cocok dengan domain situs di kolom URL pengguna. Cookie situs yang sama biasa digunakan untuk membuat orang tetap login ke setiap situs, mengingat preferensi mereka, dan mendukung analisis situs.

Domain situs cocok dengan domain cookie

Ketika resource di halaman web mengakses cookie yang cocok dengan situs yang dikunjungi pengguna, ini adalah konteks situs yang sama atau "pihak pertama".

Saat ini, jika cookie hanya dimaksudkan untuk diakses dalam konteks pihak pertama, developer memiliki opsi untuk menerapkan salah satu dari dua setelan (SameSite=Lax atau SameSite=Strict) guna mencegah akses eksternal. Namun, sangat sedikit developer yang mengikuti praktik yang direkomendasikan ini, sehingga banyak cookie situs yang sama terekspos ancaman seperti serangan Pemalsuan Permintaan Lintas Situs dengan sia-sia.

Untuk mengamankan lebih banyak situs dan penggunanya, model baru yang aman secara default menganggap semua cookie harus dilindungi dari akses eksternal, kecuali jika ditentukan lain. Developer harus menggunakan setelan cookie baru, yaitu SameSite=None, untuk menetapkan cookie bagi akses lintas situs. Jika atribut SameSite=None ada, atribut Secure tambahan harus digunakan sehingga cookie lintas situs hanya dapat diakses melalui koneksi HTTPS. Hal ini tidak akan mengurangi semua risiko yang berkaitan dengan akses lintas situs, tetapi akan memberikan perlindungan terhadap serangan jaringan.

Selain manfaat keamanan langsung, deklarasi eksplisit cookie lintas situs memungkinkan transparansi dan pilihan pengguna yang lebih baik. Misalnya, browser dapat menawarkan kontrol terperinci kepada pengguna untuk mengelola cookie yang hanya diakses oleh satu situs secara terpisah dari cookie yang diakses di beberapa situs.

Penegakan Chrome Mulai Februari 2020

Dengan diluncurkannya Chrome 80 pada bulan Februari, Chrome akan memperlakukan cookie yang tidak memiliki nilai SameSite yang dideklarasikan sebagai cookie SameSite=Lax. Hanya cookie dengan setelan SameSite=None; Secure yang akan tersedia untuk akses eksternal, asalkan cookie diakses dari koneksi yang aman. Pelacak Status Platform Chrome untuk SameSite=None dan Secure akan terus diperbarui dengan informasi peluncuran terbaru.

Mozilla telah menegaskan dukungannya atas model klasifikasi cookie yang baru dengan maksud untuk menerapkan persyaratan SameSite=None; Secure untuk cookie lintas situs di Firefox. Microsoft baru-baru ini mengumumkan rencana untuk mulai menerapkan model tersebut sebagai eksperimen awal di Microsoft Edge 80.

Cara Melakukan Persiapan; Kompleksitas yang Diketahui

Jika mengelola cookie lintas situs, Anda perlu menerapkan setelan SameSite=None; Secure untuk cookie tersebut. Penerapan harus mudah dipahami sebagian besar developer, tetapi kami sangat menyarankan agar Anda memulai pengujian sekarang untuk mengidentifikasi kompleksitas dan kasus khusus, seperti berikut:

  • Belum semua bahasa dan library mendukung nilai None, yang mengharuskan developer menetapkan header cookie secara langsung. Repositori GitHub ini memberikan petunjuk untuk menerapkan SameSite=None; Secure dalam berbagai bahasa, library, dan framework.
  • Beberapa browser, termasuk beberapa versi Chrome, Safari, dan UC Browser, dapat menangani nilai None dengan cara yang tidak diinginkan, yang mengharuskan developer membuat kode pengecualian untuk klien tersebut. Ini mencakup Android WebView yang didukung oleh versi Chrome yang lebih lama. Berikut daftar klien yang tidak kompatibel yang diketahui.
  • Developer aplikasi disarankan untuk mendeklarasikan setelan SameSite cookie yang sesuai untuk Android WebViews berdasarkan versi Chrome yang kompatibel dengan nilai None, baik untuk cookie yang diakses melalui header HTTP(S) maupun melalui CookieManager API Android WebView, meskipun model baru tidak akan diterapkan di Android WebView sampai nanti.
  • Administrator IT Perusahaan mungkin perlu menerapkan kebijakan khusus guna mengembalikan Browser Chrome ke perilaku lama untuk sementara, jika beberapa layanan seperti single sign-on atau aplikasi internal belum siap untuk peluncuran pada bulan Februari.
  • Jika Anda memiliki cookie yang Anda akses dalam konteks pihak pertama dan ketiga, sebaiknya gunakan cookie terpisah untuk mendapatkan manfaat keamanan SameSite=Lax dalam konteks pihak pertama.

SameSite Cookies Explained menawarkan panduan khusus untuk situasi yang dijelaskan di atas, serta saluran untuk mengajukan masalah dan pertanyaan.

Untuk menguji pengaruh perilaku Chrome baru pada situs atau cookies yang Anda kelola, Anda dapat membuka chrome://flags di Chrome 76 atau yang lebih baru serta mengaktifkan eksperimen "SameSite by default cookies" dan "Cookies without SameSite must be secure". Selain itu, eksperimen ini akan otomatis diaktifkan untuk sebagian pengguna Chrome 79 Beta. Beberapa pengguna Beta yang mengaktifkan eksperimen dapat mengalami masalah inkompatibilitas dengan layanan yang belum mendukung model baru tersebut; pengguna dapat memilih untuk tidak mengaktifkan eksperimen Beta dengan membuka chrome://flags dan menonaktifkannya.

Jika Anda mengelola cookie yang hanya diakses dalam konteks situs yang sama (cookie situs yang sama), Anda tidak perlu melakukan tindakan apa pun; Chrome akan otomatis mencegah cookie tersebut diakses oleh entitas eksternal, meskipun jika atribut SameSite tidak ada atau tidak ada nilai yang ditetapkan. Namun, kami sangat menyarankan Anda untuk menerapkan nilai SameSite yang sesuai (Lax atau Strict) dan tidak mengandalkan perilaku browser default, karena tidak semua browser melindungi cookie situs yang sama secara default.

Terakhir, jika khawatir tentang kesiapan vendor dan pihak lain yang menyediakan layanan ke situs, Anda dapat memeriksa peringatan konsol Developer Tools di Chrome 77 dan yang lebih baru. Peringatan tersebut akan muncul saat halaman berisi cookie lintas situs tidak menerapkan setelan yang diperlukan:

Cookie yang terkait dengan resource lintas situs di (domain cookie) ditetapkan tanpa atribut 'SameSite'

Beberapa penyedia (termasuk beberapa layanan Google) akan menerapkan perubahan yang diperlukan dalam beberapa bulan menjelang peluncuran Chrome 80 pada bulan Februari; Anda dapat menghubungi partner Anda untuk mengonfirmasi kesiapan mereka.