1. Pahami bahwa CORS adalah solusi sementara untuk menutupi cacat desain browser.
- CORS (Cross-Origin Resource Sharing) menangani masalah keamanan yang muncul dari kredensial implisit pada permintaan lintas origin.
- Perilaku bawaan browser membuat pengguna berisiko terekspos pada serangan XSRF.
- CORS berusaha mengurangi masalah ini, tetapi memiliki keterbatasan mendasar dalam cakupan keamanannya.
2. CORS mencegah pembacaan hasil dari permintaan lintas origin, tetapi tidak memblokir permintaannya sendiri.
- fun-games.example tidak dapat membaca data dari your-bank.example, tetapi tetap bisa menjalankan permintaan yang mengubah status seperti transfer dana.
- Ini terjadi karena cara browser menangani cookie dan kredensial secara default.
3. Keamanan lintas origin yang efektif dimulai dengan mengabaikan kredensial implisit.
- Hapus atau izinkan secara eksplisit cookie dan kredensial serupa pada permintaan lintas origin.
- Gunakan middleware yang memanfaatkan header
Sec-Fetch-* untuk memfilter atau menghapus cookie lintas origin.
4. Kredensial eksplisit adalah alternatif yang lebih aman daripada kredensial implisit.
- Gunakan header
Authorization untuk token autentikasi alih-alih cookie.
- Kredensial eksplisit mencegah penyalahgunaan kredensial antar-situs.
- Ini tidak cocok untuk situs yang dirender di server, tetapi merupakan metode optimal untuk API dan aplikasi sisi klien.
5. Terapkan cookie SameSite untuk membatasi penggunaan kredensial lintas origin.
- Gunakan
SameSite=Lax agar cookie tidak disertakan dalam permintaan lintas origin secara default.
- Pilih
SameSite=Strict untuk kebijakan yang lebih ketat. Namun, ini dapat memengaruhi kegunaan (misalnya logout setelah navigasi lintas origin).
6. Terapkan kebijakan CORS yang sederhana dan aman.
- Kebijakan dasar:
Access-Control-Allow-Origin: * dan Access-Control-Allow-Methods: * hanya mengizinkan akses anonim.
- Kebijakan ini menonaktifkan kredensial implisit pada permintaan lintas origin sehingga melindungi situs dari penyalahgunaan kredensial yang tidak disengaja.
7. Jangan membuat kebijakan CORS terlalu rumit demi keamanan.
- Pengaturan yang terlalu spesifik dapat menciptakan rasa aman yang keliru.
- Proxy CORS dan solusi lain dapat melewati kebijakan yang ditegakkan browser, sehingga upaya pembatasan akses menjadi tidak efektif.
8. Pahami gerakan yang lebih luas menuju default web yang lebih aman.
- Browser sedang mengeksplorasi pendekatan seperti State Partitioning (Firefox), Tracking Prevention (Safari), dan CHIPS (Chrome) untuk mengatasi masalah kredensial lintas origin.
- Inisiatif ini berupaya meningkatkan keamanan dan privasi pengguna dengan membatasi berbagi cookie dan kredensial antar-origin.
9. Sadari bahwa CORS adalah solusi yang tidak sempurna.
- Kompatibilitas mundur CORS menambah kompleksitas tanpa sepenuhnya menyelesaikan masalah keamanan dasarnya.
- Browser perlahan mengadopsi pendekatan baru untuk mengurangi masalah ini, tetapi kemajuannya tidak konsisten.
Belum ada komentar.