FlawOpen

flawopen.com/CSRF/Permintaan GET

Token CSRF untuk GET: kapan diperlukan?

Halaman referensi
Jawaban singkat

Jika GET hanya mengambil data, metode ini tidak boleh mengubah state server dan biasanya tidak memerlukan token CSRF. Browser, crawler, pratinjau, dan resource tertanam dapat mengirim GET tanpa klik yang disengaja. Gunakan metode tidak aman untuk tindakan seperti menghapus atau membeli, serta lindungi perubahan terautentikasi cookie dari CSRF. GET lama yang mengubah state tetap rentan dan perlu perlindungan sementara selama migrasi.

Mengapa GET harus tetap menjadi metode aman

RFC 9110 mendefinisikan GET sebagai metode aman: klien tidak meminta perubahan state. Aman bukan berarti server tidak memiliki efek sampingan seperti pencatatan log. GET juga idempoten, tetapi itu sifat yang berbeda. Browser, prefetch, crawler, dan pratinjau tautan dapat mengirim permintaan aman tanpa tindakan pengguna yang disengaja. <img src="..."> di situs lain juga dapat membuat browser mengirim GET beserta cookie pengguna. Jika endpoint menghapus item atau mengubah pengaturan akun, endpoint itu melanggar semantik GET dan dapat dipicu oleh konten halaman biasa.

Terapkan perlindungan CSRF pada permintaan yang mengubah state

FAQ token CSRF untuk GET

Bagaimana jika kode lama memiliki endpoint GET yang mengubah state?

Anggap endpoint itu rentan. Wajibkan sementara perlindungan CSRF yang divalidasi server (misalnya synchronizer token ditambah pemeriksaan Origin atau Fetch Metadata bila tersedia), audit cache dan Referer, lalu migrasikan tindakan ke POST, PUT, PATCH, atau DELETE. Hindari token di query string: URL dapat muncul di riwayat browser, log, dan data Referer. Pemeriksaan token hanya jembatan sampai endpoint mengikuti semantik metode aman.

Referensi

Lihat juga Cross-Site Request Forgery (CSRF, CWE-352): cara kerja dan cara mencegahnya — flawopen.com JWT di localStorage vs cookie HttpOnly: mana yang lebih aman? — flawopen.com Next.js Server Actions CSRF: Origin dan konfigurasi aman Apakah SameSite=Strict menggantikan token CSRF?