Blogger Jateng

CORS dan Keamanan Web: Membandingkan dengan Mekanisme Keamanan Lainnya

Cross-Origin Resource Sharing (CORS) adalah komponen penting dari keamanan web, memungkinkan akses terkendali ke sumber daya pada server web dari sumber yang berbeda. Memahami bagaimana CORS dibandingkan dengan mekanisme keamanan web lainnya dapat membantu pengembang membangun aplikasi yang aman sekaligus memungkinkan interaksi yang mulus antara klien dan server.

Apa yang dimaksud dengan CORS?

Cross-Origin Resource Sharing (CORS) adalah sebuah mekanisme yang memungkinkan permintaan lintas-asal yang aman dan berbagi data antara peramban dan server. Secara default, browser menerapkan Kebijakan Asal-Sama (Same-Origin Policy/SOP) untuk menghentikan skrip berbahaya mengakses data sensitif pada sumber lain. SOP melindungi pengguna, tetapi juga mencegah komunikasi lintas asal yang sah. CORS menyediakan cara untuk melonggarkan pembatasan ini dengan mengizinkan server untuk menentukan asal mana yang bisa mengakses sumber dayanya.

Ketika permintaan lintas asal dibuat, peramban mengirimkan permintaan HTTP ke server target, termasuk header Asal. Jika server mengizinkan permintaan tersebut, server akan merespons dengan tajuk CORS yang sesuai, seperti Access-Control-Allow-Origin. Jika header tidak sesuai dengan harapan browser, permintaan akan diblokir.

sumber: medium.com

CORS vs Mekanisme Keamanan Lainnya

1. Kebijakan Keamanan Konten (CSP)

Kebijakan Keamanan Konten (CSP) adalah fitur keamanan web yang dirancang sebagai mekanisme pertahanan yang mendalam untuk memitigasi berbagai jenis risiko, seperti skrip lintas situs (XSS) dan serangan injeksi data. Dengan CSP, pengembang dapat menentukan dari mana sumber daya, seperti skrip, gaya, dan gambar, dapat dimuat.

Perbandingan:
  • Tujuan: Meskipun CORS berfokus pada pengaturan permintaan lintas asal, CSP dirancang untuk mencegah pemuatan sumber daya yang tidak sah di dalam halaman web.
  • Cakupan: CORS menangani izin sisi server untuk interaksi lintas-asal, sedangkan CSP menangani kebijakan pemuatan konten sisi klien.
  • Implementasi: Keduanya mengandalkan header HTTP, tetapi arahan mereka melayani tujuan keamanan yang berbeda.

2. Kebijakan Asal Sama (SOP)

Kebijakan Asal Sama adalah prinsip keamanan web inti yang mendefinisikan bagaimana dokumen atau skrip dari satu sumber dapat berinteraksi dengan sumber daya dari sumber lain. Ini berfungsi sebagai fondasi untuk CORS, karena CORS pada dasarnya hanyalah pelonggaran aturan SOP tertentu dengan pengecualian yang terkendali.

Perbandingan:
  • Tujuan: SOP digunakan untuk mencegah akses lintas asal yang tidak sah, sementara spesifikasi dibuat untuk interaksi lintas asal yang diperlukan terkait beberapa header HTTP.
  • Fleksibilitas: SOP secara default bersifat ketat, sedangkan CORS menyediakan kelonggaran selektif.
  • Penggunaan: SOP adalah kebijakan peramban yang melekat, sedangkan CORS memerlukan konfigurasi sisi server secara eksplisit.

3. Otorisasi dan Autentikasi

Otentikasi memvalidasi siapa pengguna atau sistem, sementara otorisasi memberi mereka akses ke sumber daya apa. OAuth, JWT, dan kunci API adalah mekanisme yang umum.

Perbandingan:
  • Tujuan: Otentikasi dan otorisasi untuk identitas pengguna dan kontrol akses, dan CORS untuk berbagi sumber daya lintas asal.
  • Cakupan: Ada hal yang lebih signifikan daripada perbedaan antara CORS dengan otentikasi dan otorisasi.
  • Ketergantungan: CORS melengkapi autentikasi dengan memastikan bahwa hanya sumber yang diizinkan yang bisa membuat permintaan, tetapi tidak menggantikan validasi identitas pengguna.

4. Transportasi yang aman: HTTPS

Dengan mengenkripsi komunikasi antara klien dan server, HTTPS menyediakan lapisan keamanan untuk memastikan integritas dan kerahasiaan data saat transit.

Perbandingan:
  • Tujuan: HTTPS mengenkripsi data dalam perjalanan, sementara CORS mengatur akses ke sumber daya.
  • Aman: HTTPS mengamankan saluran komunikasi, sedangkan CORS adalah tentang mengamankan lintas asal.
  • Ketergantungan: Header CORS biasanya diimplementasikan melalui HTTPS untuk mengamankan komunikasi.

Praktik Terbaik untuk Menggunakan CORS

  1. Kurangi Izinkan Asal: Izinkan hanya akses asal tepercaya dengan menetapkannya sebagai argumen di header Access-Control-Allow-Origin
  2. Menerapkan Permintaan Pra-penerbangan: Untuk permintaan yang kompleks, pemeriksaan sebelum penerbangan harus ditangani dengan benar untuk memverifikasi izin.
  3. Amankan dengan HTTPS: Gunakan HTTPS setiap saat; hanya dengan begitu header dan permintaan CORS tidak dapat dicegat.
  4. Batasi Pembagian Kredensial: Header Access-Control-Allow-Credentials harus digunakan dengan bijaksana untuk mencegah pengungkapan kredensial pengguna yang tidak beralasan.

Kesimpulan

CORS memainkan peran penting dalam keamanan web modern dengan memungkinkan interaksi lintas asal yang terkendali. Jika dibandingkan dengan mekanisme seperti CSP, SOP, autentikasi, dan HTTPS, CORS menangani lapisan keamanan yang spesifik-manajemen akses sumber daya lintas asal. Meskipun tidak ada mekanisme tunggal yang dapat menjamin keamanan sepenuhnya, menggabungkan CORS dengan strategi lain akan menciptakan pertahanan yang kuat terhadap ancaman umum. Pengembang harus mengonfigurasi kebijakan CORS dengan hati-hati untuk menyeimbangkan keamanan dan fungsionalitas, memastikan pengalaman web yang aman dan lancar.