SameSite = Lax secara default - sudah ada di Chrome 80 stable (meskipun belum untuk semua orang)

Suatu hari, seorang rekan yang penuh perhatian (terima kasih, Lena) melaporkan bug aneh - server biasanya mengatur cookie di browser, tetapi tidak kembali. Semuanya bekerja sehari sebelumnya, tetapi sekarang cookie telah ditetapkan, tetapi setelah beberapa detik cookie itu secara ajaib menghilang (meskipun seharusnya berlangsung 24 jam). Itu direproduksi hanya oleh beberapa orang di tim dan hanya di Chrome 80 baru, tetapi sisanya di Chrome memiliki versi yang persis sama, semuanya teratur. Di browser lain, semuanya berfungsi seperti jam. Mistik. Mereka mulai mencari tahu, dan setelah beberapa waktu, konsol Chrome melihat peringatan untuk header respons yang mengatur cookie:
A cookie associated with a cross-site resource at _your_domain_ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

Mereka mulai mempelajari apa itu, dan lambat laun menjadi jelas bagaimana kesalahan itu muncul dan mengapa tidak semua orang menunjukkannya. Karena layanan kami harus memproses permintaan dari domain yang berbeda, maka ini SameSitehanya kasus kami. Mereka menambahkan SameSite=None; Secure, dan masalah terpecahkan bagi kita.

Mengapa demikian?


Awalnya, menurut standar HTTP, browser mengirim cookie (atau hanya cookie) untuk permintaan apa pun ke domain yang sesuai. Ini membuka peluang untuk serangan CSRF, yaitu, memungkinkan orang-orang yang tidak bermoral, dalam keadaan tertentu, untuk mendapatkan akses ke beberapa sumber daya dengan kedok bonafid yang tidak curiga, hanya menggunakan cookie mereka.

Pada 2016, atribut diperkenalkan SameSiteyang memungkinkan Anda untuk mengontrol apakah browser akan mengirim cookie jika halaman mengirim permintaan ke domain lain. Pengembang memiliki kesempatan untuk memblokir transfer cookie mereka, jika permintaan dieksekusi dari situs pihak ketiga. Untuk ini, atribut SameSiteharus secara eksplisit diatur ke Strict.(cookie hanya ditransmisikan berdasarkan permintaan dan transisi dari domain yang menjadi miliknya), atau Lax (cookie ditransmisikan pada saat transisi ke situs dari situs lain melalui tautan langsung, tetapi tidak dikirimkan pada permintaan lain dari mereka, misalnya, ketika AJAX meminta atau mengunggah gambar ) Absennya SameSitesetara SameSite=None, yaitu, secara default, cookie masih dikirimkan pada permintaan apa pun.

Pada bulan Mei 2019, pengembang Google Chrome mengumumkan bahwa mereka akan secara bertahap mengubah perilaku ini dan menafsirkan tidak adanya SameSite sebagai SameSite=Lax(selengkapnya di sini) Yaitu - secara default, browser akan memblokir pengiriman cookie untuk permintaan dari halaman saat ini ke sumber daya lainnya, kecuali untuk klik langsung pada tautan. Pengembang Firefox dan Edge telah mengumumkan bahwa seiring waktu, mereka juga akan menerapkan perubahan ini di browser mereka.

Untuk pengguna, perilaku browser ini lebih aman. Pengembang situs dan layanan web perlu diingat bahwa jika mereka masih perlu menerima cookie ketika meminta dari situs lain, mereka harus secara eksplisit mengatur atribut cookie mereka SameSite=None, Secure( Secure- karena permintaan seperti itu, di samping itu, hanya boleh datang ke server melalui saluran yang aman) )

Karena inovasi mengubah standar saat ini, dan tidak semua situs akan dapat beradaptasi dengan cepat, transisi ke perilaku baru terjadi secara bertahap. Awalnya, ini dinyalakan untuk sejumlah kecil pengguna beta Chrome, dan sekarang jumlah mereka secara bertahap meningkat. Informasi aktual tersedia di sini . Entri terbaru pada tautan:
Terakhir diperbarui 9 Maret 2020.

Kami telah mulai menerapkan perilaku baru untuk Chrome 80 stable, hanya saja tidak untuk 100% pengguna. Peluncuran terkendali adalah untuk populasi awal yang terbatas,
Artinya, periode pengujian beta sudah terlambat, dan pengembang Chrome mulai perlahan-lahan memasukkan fungsionalitas baru di antara pengguna biasa. Prinsipnya bagus, karena lebih aman.

Anda dapat memulihkan perilaku lama melalui pengaturan : di bilah alamat Chrome, masukkan chrome://flags, buka halaman, temukan SameSite sebagai item cookie default , dan atur ke Dinonaktifkan . Tapi ini lebih cocok untuk pengujian daripada untuk pengguna biasa. Demikian pula, jika Chrome 80 Anda masih menjalankan perilaku lama, Anda dapat memaksakan fungsionalitas baru dengan menyetel pengaturan yang sama ke Diaktifkan .

Karena itu, jika situs Anda perlu menerima cookie ketika meminta dari domain yang berbeda - bersiaplah untuk perubahan yang akan datang (dan siapa pun yang siap baik untuk itu). Baik untuk semua!

Ditambahkan oleh:
xdenserditunjukkan dalam komentar bahwa beberapa versi browser yang lebih lama tidak mendukung SameSite=None, tidak menerima cookie sama sekali atau memprosesnya dengan cara yang tidak standar. Diantaranya adalah browser untuk desktop dan perangkat seluler. Halaman https://www.chromium.org/updates/same-site/incompatible-clients menyediakan daftar peramban dan solusi yang memungkinkan untuk masalah tersebut (dalam pseudo-code, tetapi cukup detail). Penulis menyarankan untuk mendeteksi versi browser yang bermasalah berdasarkan judul useragent, dan tidak mengatur atribut cookie mereka SameSite=Nonesama sekali.

Menambahkan 2:
Sehubungan dengan situasi dengan COVID-19, mulai 3 April 2020, Google untuk sementara menangguhkan implementasi perubahan yang dijelaskan dalam pemrosesan SameSite, untuk memastikan kelancaran operasi layanan Internet. Pada perangkat di mana perubahan sudah diterapkan, mereka akan dibatalkan.
(c) blog.chromium.org/2020/04/temporently-rolling-back-samesite.html

Sumber:
web.dev/samesite-cookies- dijelaskan
www.chromium.org/updates/same-site
www.chromestatus.com/ feature / 5088147346030592
www.chromium.org/updates/same-site/incompatible-clients
blog.chromium.org/2020/04/temporently-rolling-back-samesite.html

All Articles