Pertanyaan ini adalah tentang melindungi dari serangan Pemalsuan Permintaan Lintas Situs saja.
Ini secara khusus tentang: Apakah perlindungan melalui header Origin (CORS) sebaik perlindungan melalui token CSRF?
Contoh:
- Alice masuk (menggunakan cookie) dengan browsernya ke " https://example.com ". Saya berasumsi, bahwa dia menggunakan browser modern.
- Alice mengunjungi " https://evil.com ", dan kode sisi klien evil.com melakukan beberapa jenis permintaan ke " https://example.com " (skenario CSRF klasik).
Begitu:
- Jika kami tidak memeriksa header Origin (sisi server), dan tidak ada token CSRF, kami memiliki lubang keamanan CSRF.
- Jika kami memeriksa token CSRF, kami aman (tetapi agak membosankan).
- Jika kami memeriksa header Origin, permintaan dari kode sisi klien evil.com harus diblokir seperti halnya saat menggunakan token CSRF - kecuali, jika memungkinkan, entah bagaimana kode evil.com untuk menyetel header Origin.
Saya tahu, bahwa ini seharusnya tidak mungkin dilakukan dengan XHR (lihat misalnya Keamanan untuk berbagi sumber daya lintas sumber ), setidaknya tidak, jika kita mempercayai spesifikasi W3C untuk diterapkan dengan benar di semua browser modern (dapatkah kita?)
Tapi bagaimana dengan jenis permintaan lainnya - misalnya pengiriman formulir? Memuat tag skrip / img / ...? Atau cara lain apa pun yang dapat digunakan halaman untuk (secara legal) membuat permintaan? Atau mungkin beberapa peretasan JS yang dikenal?
Catatan: Saya tidak sedang membicarakan
- aplikasi asli,
- browser yang dimanipulasi,
- bug skrip lintas situs di halaman example.com,
- ...
Origin
? Itu akan meniadakan perlindungan CORS.