Menangani perubahan cookie SameSite di browser Chrome
Apa itu SameSite?
SameSite
adalah properti yang dapat diatur dalam cookie HTTP untuk mencegah serangan Cross Site Request Forgery (CSRF) dalam aplikasi web:
- Saat
SameSite
diatur ke Lax, cookie dikirim dalam permintaan di situs yang sama dan dalam permintaan GET dari situs lain. Tidak dikirim dalam permintaan GET yang merupakan lintas domain. - Nilai Strict bahwa cookie dikirim dalam permintaan hanya dalam situs yang sama.
Secara default, nilai SameSite
TIDAK diatur di browser dan itulah sebabnya tidak ada batasan cookie yang dikirim dalam permintaan. Aplikasi harus ikut serta dalam perlindungan CSRF dengan menetapkan Lax atau Strict sesuai kebutuhannya.
Perubahan dan dampak SameSite pada autentikasi
Pembaruan terkini untuk standar di SameSite mengusulkan perlindungan aplikasi dengan membuat perilaku default SameSite
ketika tidak ada nilai yang diatur ke Lax. Mitigasi ini berarti cookie akan dibatasi pada permintaan HTTP kecuali GET yang dibuat dari situs lain. Selain itu, nilai None diperkenalkan untuk menghapus pembatasan cookie yang dikirim. Pembaruan ini akan segera dirilis dalam versi browser Chrome yang akan datang.
Saat aplikasi web mengautentikasi dengan platform identitas Microsoft menggunakan mode respons "form_post", server login merespons aplikasi menggunakan HTTP POST untuk mengirim token atau kode autentikasi. Karena permintaan ini adalah permintaan lintas domain (dari login.microsoftonline.com
ke domain Anda - contohnya https://contoso.com/auth
), cookie yang ditetapkan oleh aplikasi Anda kini masuk dalam aturan baru di Chrome. Cookie yang perlu digunakan dalam skenario lintas situs adalah cookie yang memegang nilai state dan nonce, yang juga dikirim dalam permintaan masuk. Ada cookie lain yang dihilangkan oleh ID Microsoft Entra untuk mengadakan sesi.
Jika Anda tidak memperbarui aplikasi web, perilaku baru ini akan mengakibatkan kegagalan autentikasi.
Mitigasi dan sampel
Untuk mengatasi kegagalan autentikasi, aplikasi web yang melakukan autentikasi dengan platform identitas Microsoft dapat mengatur properti SameSite
ke None
untuk cookie yang digunakan dalam skenario lintas domain saat berjalan di browser Chrome.
Browser lainnya (lihat di sini untuk daftar lengkap) mengikuti perilaku SameSite
sebelumnya dan tidak akan menyertakan cookie jika SameSite=None
ditetapkan.
Itu sebabnya, untuk mendukung autentikasi di beberapa browser, aplikasi web harus menetapkan nilai SameSite
ke None
hanya di Chrome dan membiarkan nilai kosong di browser lain.
Pendekatan ini ditunjukkan dalam kode sampel berikut.
Tabel berikut menyajikan permintaan pull yang bekerja di sekitar perubahan SameSite dalam sampel ASP.NET dan ASP.NET Core kami.
Untuk detail tentang cara menangani cookie SameSite di ASP.NET dan ASP.NET Core, lihat juga:
Langkah berikutnya
Pelajari selengkapnya tentang SameSite dan skenario aplikasi Web:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk