flawopen.com/CSRF/Permintaan GET
Token CSRF untuk GET: kapan diperlukan?
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
- ✓Jangan lakukan perubahan state yang diminta melalui GET, HEAD, atau OPTIONS; gunakan POST, PUT, PATCH, atau DELETE untuk mutasi
- ✓Lindungi metode tidak aman yang terautentikasi cookie dengan perlindungan CSRF framework atau token tervalidasi; tambahkan SameSite dan pemeriksaan Origin/Fetch Metadata
- ✓Anggap setiap GET yang mengubah state sebagai bug semantik metode HTTP; tambahkan perlindungan CSRF sementara bila perlu, migrasikan tindakan, dan hapus rahasia dari URL
FAQ token CSRF untuk GET
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.