UPDATE (28/10/2019): Kami telah merevisi poin 2 dan 3 pada bagian "Cara Mempersiapkan; Kompleksitas yang Diketahui" di bawah.
Pada bulan Mei, Chrome mengumumkan model secure-by-default untuk cookie, diaktifkan oleh sistem klasifikasi cookie yang baru (spec). Inisiatif ini adalah bagian dari upaya berkelanjutan kami untuk meningkatkan privasi dan keamanan di seluruh web.
Chrome berencana untuk mengimplementasikan model baru ini dengan Chrome 80 pada bulan Februari 2020. Mozilla dan Microsoft juga telah menunjukkan maksud untuk mengimplementasikan model baru di Firefox dan Edge, sesuai jadwal mereka. Penting bagi developer yang mengelola cookie untuk menilai kesiapan mereka hari ini. Entri blog ini memberikan garis besar dari konsep ini; silakan lihat Penjelasan Cookie SameSite di web.dev untuk panduan developer.


Memahami Konteks Cookie Cross-Site dan Same-Site


Situs biasanya mengintegrasikan layanan eksternal untuk iklan, rekomendasi konten, widget pihak ketiga, sematan sosial dan fitur lainnya. Saat Anda menjelajah web, layanan eksternal ini mungkin menyimpan cookie di browser dan kemudian mengakses cookie itu untuk memberikan pengalaman yang "personal" atau "custom" untuk mengukur interaksi audience. Setiap cookie memiliki domain yang terkait dengannya. Jika domain yang terkait dengan cookie cocok dengan layanan eksternal dan bukan situs di kolom URL pengguna, ini dianggap sebagai konteks cross-site atau “pihak ketiga”.

Kasus penggunaan cross-site yang kurang kentara mencakup situasi di mana entity yang memiliki beberapa situs menggunakan cookie di seluruh properti tersebut. Meskipun entity yang sama memiliki cookie dan situs, ini masih dianggap sebagai konteks cross-site atau “pihak ketiga” ketika domain cookie tidak cocok dengan situs dari mana cookie diakses.
Ketika sumber daya eksternal pada halaman web mengakses cookie yang tidak cocok dengan domain situs, ini adalah konteks cross-site atau “pihak ketiga”.


Sebaliknya, akses cookie dalam konteks same-site (atau “pihak pertama”) terjadi ketika domain cookie cocok dengan domain situs di kolom URL pengguna. Cookie same-site biasanya digunakan agar orang tetap login ke situs individu, mengingat preferensinya dan mendukung analytics situs.

 
Ketika sumber daya halaman web mengakses cookie yang cocok dengan situs yang dikunjungi pengguna, ini adalah konteks same-site atau “pihak pertama”.


Model Baru untuk Transparansi dan Keamanan Cookie


Hari ini, bila cookie hanya ditujukan untuk diakses dalam konteks pihak pertama, developer memiliki opsi untuk menerapkan salah satu dari dua setelan (SameSite=Lax atau SameSite=Strict) untuk mencegah akses eksternal. Namun, sangat sedikit developer yang mengikuti praktik yang disarankan ini, sehingga banyak cookie same-site terekspos ancaman seperti serangan Cross-Site Request Forgery.

Untuk menjaga lebih banyak situs dan penggunanya, model secure-by-default terbaru mengasumsikan bahwa semua cookie harus dilindungi dari akses eksternal kecuali ada ketentuan lain. Developer harus menggunakan setelan cookie baru, SameSite=None, guna menandai cookie untuk akses cross-site. Ketika terdapat atribut SameSite=None, atribut Secure tambahan harus digunakan sehingga cookie cross-site hanya bisa diakses melalui koneksi HTTPS. Ini tidak akan mengurangi semua risiko yang terkait dengan akses lintas-situs, tetapi akan memberikan perlindungan terhadap serangan jaringan.

Selain manfaat keamanan langsung, deklarasi eksplisit cookie cross-site mengaktifkan transparansi dan pilihan pengguna yang lebih banyak. Misalnya, browser dapat menawarkan kepada pengguna kontrol yang sangat baik untuk mengelola cookie yang hanya diakses oleh satu situs secara terpisah dari cookie yang diakses di beberapa situs.


Pemberlakuan di Chrome Dimulai pada Februari 2020


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

Mozilla telah menegaskan dukungannya terhadap model klasifikasi cookie yang baru dengan maksud untuk mengimplementasikan persyaratan SameSite=None; Secure untuk cookie cross-site di Firefox. Microsoft baru-baru ini mengumumkan rencana untuk mulai mengimplementasikan model yang dimulai sebagai eksperimen di Microsoft Edge 80.


Cara Mempersiapkan; Kompleksitas yang Diketahui


Jika Anda mengelola cookie cross-site, Anda harus menerapkan setelan SameSite=None; Secure untuk cookie tersebut. Implementasi seharusnya mudah bagi kebanyakan developer, tetapi kami sangat menyarankan Anda untuk mulai mengujinya sekarang untuk mengidentifikasi kompleksitas dan kasus khusus, seperti berikut:

  • Belum semua bahasa dan library mendukung nilai None, mengharuskan developer untuk menyetel header cookie secara langsung. Repositori Github ini menyediakan petunjuk untuk mengimplementasikan SameSite=None; Secure dalam berbagai bahasa, library, dan framework.
  • Beberapa browser, termasuk beberapa versi Chrome, Safari dan UC Browser, mungkin menangani nilai  None dengan cara yang tidak diharapkan, mengharuskan developer untuk membuat kode pengecualian bagi klien tersebut. Ini mencakup Android WebView yang didukung oleh Chrome versi lama. Berikut adalah daftar klien yang tidak kompatibel.
  • Developer aplikasi disarankan untuk mendeklarasikan setelan cookie SameSite yang sesuai untuk Android WebView berdasarkan versi Chrome yang kompatibel dengan  nilai None, baik untuk cookie yang diakses melalui header HTTP(S) dan melalui CookieManager API Android WebView, meskipun model baru ini tidak akan diterapkan di Android WebView hingga nanti.
  • Administrator TI perusahaan mungkin perlu menerapkan kebijakan khusus untuk sementara waktu mengembalikan Chrome Browser ke perilaku lama jika beberapa layanan seperti sistem masuk tunggal atau aplikasi internal tidak siap untuk peluncuran bulan Februari.
  • Jika Anda memiliki cookie yang Anda akses dalam konteks pihak pertama dan ketiga, Anda dapat mempertimbangkan penggunaan cookie terpisah untuk mendapatkan manfaat keamanan SameSite=Lax dalam konteks pihak pertama.
Penjelasan Cookie SameSite menawarkan panduan khusus untuk situasi di atas, serta saluran untuk melaporkan masalah dan pertanyaan.

Untuk menguji efek perilaku Chrome baru di situs atau cookie yang Anda kelola, Anda bisa membuka chrome://flags di Chrome 76+ dan mengaktifkan eksperimen “SameSite by default cookies” dan “Cookies without SameSite must be secure”. Selain itu, eksperimen ini akan diaktifkan secara otomatis untuk subset pengguna Chrome 79 Beta. Beberapa pengguna Beta dengan eksperimen diaktifkan bisa mengalami masalah inkompatibilitas dengan layanan yang belum mendukung model baru ini; pengguna dapat memilih untuk tidak ikut eksperimen Beta dengan membuka chrome://flags dan menonaktifkannya.

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

Yang terakhir, jika Anda mengkhawatirkan kesiapan vendor dan orang lain yang menyediakan layanan ke situs, Anda bisa memeriksa peringatan konsol Developer Tools di Chrome 77+ bila halaman yang berisi cookie cross-site kehilangan setelan yang dibutuhkan:

Cookie yang terkait dengan sumber daya cross-site di (domain cookie) ditetapkan tanpa atribut `SameSite`. Rilis Chrome di masa mendatang hanya akan mengirimkan cookie dengan permintaan cross-site jika disetel dengan `SameSite=None` dan `Secure`. Anda bisa meninjau cookie dalam fitur developer dalam Application>Storage>Cookies dan melihat detail selengkapnya di https://www.chromestatus.com/feature/5088147346030592 dan https://www.chromestatus.com/feature/5633521622188032.”

Beberapa penyedia (termasuk beberapa layanan Google) akan menerapkan perubahan yang diperlukan pada bulan-bulan mendatang menjelang Chrome 80 pada bulan Februari; Anda mungkin perlu menghubungi mitra Anda untuk mengonfirmasi kesiapannya.


Ditulis oleh Barb Palser, Chrome and Web Platform Partnerships.