Bagikan melalui


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.

Sampel Permintaan penarikan
Tutorial bertahap aplikasi web ASP.NET Core Perbaikan cookie same site #261
Sampel aplikasi web ASP.NET MVC Perbaikan cookie same site #35
active-directory-dotnet-admin-restricted-scopes-v2 Perbaikan cookie same site #28

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: