FlawOpen

flawopen.com/CSRF/Cookie SameSite

Apakah SameSite=Strict menggantikan token CSRF?

Halaman referensi
Jawaban singkat

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

Metode autentikasi selain cookie

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.

Lax eksplisit berbeda dari atribut yang dihilangkan

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.

Klien lama atau yang tidak patuh tidak menerapkannya

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

Apakah permintaan GET memerlukan token CSRF?

Lihat panduan khusus tentang metode aman. Jangan sediakan tindakan yang mengubah status melalui metode aman seperti GET; metode aman semestinya tidak mengubah status server.

Referensi

Lihat juga Cross-Site Request Forgery (CSRF, CWE-352): cara kerja dan cara mencegahnya — flawopen.com Token CSRF untuk GET: kapan diperlukan? JWT di localStorage vs cookie HttpOnly: mana yang lebih aman? — flawopen.com Next.js Server Actions CSRF: Origin dan konfigurasi aman