flawopen.com/CSRF/Cookie SameSite
Apakah SameSite=Strict menggantikan token CSRF?
SameSite=Strict adalah lapisan perlindungan browser yang kuat untuk permintaan berautentikasi cookie dari situs lain, tetapi bukan pertahanan CSRF universal. Subdomain bersaudara tetap dianggap satu situs meskipun origin-nya berbeda, sementara klien yang tidak menerapkan atribut ini tidak terlindungi. Pertahankan token CSRF atau pemeriksaan asal permintaan lain sesuai model ancaman.
Fungsi SameSite sebenarnya
Cookie SameSite=Strict tidak dikirim pada permintaan lintas situs, termasuk pola CSRF klasik ketika situs lain mengirim formulir ke aplikasi Anda. Browser tidak akan otomatis melampirkan cookie sesi dalam konteks itu. SameSite berlaku pada tingkat situs, bukan origin: permintaan dari subdomain bersaudara masih dapat dianggap same-site. Karena itu Strict tidak melindungi dari host saudara yang disusupi atau tidak tepercaya. Strict juga dapat membuat pengguna belum terautentikasi setelah mengikuti tautan eksternal karena cookie tidak dikirim pada navigasi tersebut.
Batas perlindungannya
Jika aplikasi secara eksplisit menaruh bearer token pada header Authorization, SameSite tidak mengendalikan header itu. Perilaku otomatis browser untuk cookie berbeda. Ini tidak otomatis membuat semua desain aman: periksa apakah mekanisme lain dapat melampirkan kredensial secara otomatis dan lindungi token dari pencurian serta penyalahgunaan.
SameSite=Lax eksplisit mengizinkan permintaan same-site dan navigasi tingkat atas cross-site yang memakai metode aman seperti GET; cookie tidak dikirim pada subpermintaan cross-site atau navigasi dengan metode tidak aman. Jika atribut dihilangkan, agen pengguna memakai nilai default-nya. Di Chromium, default tersebut berbeda dari Lax eksplisit: implementasi saat ini mengizinkan beberapa cookie tanpa atribut eksplisit dikirim pada permintaan cross-site tingkat atas dengan metode tidak aman hingga 2 menit setelah dibuat (Lax-allowing-unsafe). Jangan mengandalkan perilaku kompatibilitas khusus browser ini sebagai perlindungan CSRF. Tetapkan atribut yang dimaksud secara eksplisit, uji klien yang didukung, dan jangan pernah membuat metode aman dapat mengubah status.
SameSite diterapkan oleh browser. Klien yang tidak mendukung atau mematuhi atribut ini tidak memperoleh perlindungan. Periksa klien yang didukung aplikasi dan perlakukan SameSite sebagai defense-in-depth bersama token CSRF, validasi Origin, atau pertahanan utama lainnya.
Pertanyaan umum
Lihat panduan khusus tentang metode aman. Jangan sediakan tindakan yang mengubah status melalui metode aman seperti GET; metode aman semestinya tidak mengubah status server.