Panduan / OWASP dan keamanan aplikasi

Apa itu CORS? Aturan akses respons antar-origin

CORS menentukan kapan browser boleh membagikan respons dari origin lain kepada kode halaman. Ia tidak menggantikan autentikasi, izin data, atau perlindungan terhadap perubahan yang tidak diinginkan.

Di halaman ini

CORS mengatur apa?

Cross-origin resource sharing (CORS) mengatur izin bagi browser untuk membagikan respons lintas origin kepada kode halaman. Origin dibedakan oleh skema, host, dan port. Dua subdomain dapat memiliki origin berbeda meskipun dikelola perusahaan yang sama.

CORS bukan pagar yang membuat API tidak dapat dihubungi dari luar. Klien di luar browser dapat mengirim permintaan sendiri. Sebagian permintaan browser juga dapat terkirim meskipun responsnya tidak boleh dibaca oleh skrip pemanggil.

Contoh: dasbor dan API berbeda subdomain

Dalam contoh fiktif, dasbor berada di satu subdomain dan API berada di subdomain lain. Tim hanya ingin kode dari dasbor yang disetujui dapat membaca respons API melalui browser.

Tim menetapkan origin tersebut secara tepat pada kebijakan CORS. Pada API, pemeriksaan identitas dan izin pelanggan tetap berjalan untuk setiap permintaan. Mengetahui atau meniru header Origin tidak memberi izin membaca tagihan pelanggan lain.

Hal yang perlu disepakati

Keputusan Pertanyaan untuk tim
Origin yang diizinkan Apakah daftar benar-benar terbatas pada aplikasi yang memerlukannya?
Metode dan header Mana yang dibutuhkan klien, bukan sekadar semua kemungkinan?
Credentials Apakah integrasi mengirim cookie atau kredensial browser, dan bagaimana pertahanannya?
Endpoint publik Apakah datanya memang boleh dibaca siapa pun tanpa kredensial?

Jangan memantulkan sembarang nilai Origin ke Access-Control-Allow-Origin. Jika browser menggunakan credentials, wildcard * bukan pengganti origin yang eksplisit. Untuk data yang sengaja publik tanpa credentials, kebijakan wildcard dapat sesuai setelah cakupannya diperiksa.

Mengapa ada preflight?

Untuk jenis permintaan tertentu, browser mengirim permintaan pendahuluan atau preflight dengan metode OPTIONS. Server menyatakan metode dan header yang diizinkan sebelum permintaan utama dikirim.

Tidak semua permintaan memerlukan preflight. Karena itu, autentikasi dan otorisasi tidak boleh hanya ditempatkan pada penanganan OPTIONS. Kebijakan CORS yang lolos juga tidak membuktikan bahwa perubahan data terlindungi dari CSRF.

Cara memeriksa perbaikan

Uji pada browser dari origin yang diizinkan dan yang tidak diizinkan, menggunakan akun serta data buatan. Catat permintaan utama, preflight bila ada, header respons, dan apakah kode halaman dapat membaca respons.

Lalu uji akses API secara terpisah: akun tanpa izin harus tetap ditolak meskipun header Origin diubah atau permintaan dikirim tanpa browser. Pada operasi perubahan, periksa keadaan data; pesan “CORS error” tidak membuktikan bahwa operasi gagal terjadi.

Lanjutkan ke keamanan API dan akses data. Jangan membuka seluruh origin hanya untuk membuat pesan error pada konsol hilang.

Unduh artikel (.md)

Sumber rujukan

  1. HTML5 Security Cheat Sheet ↗OWASP Foundation; panduan teknis keamanan aplikasi · Cross Origin Resource Sharing
  2. HTTP Security Response Headers Cheat Sheet ↗OWASP Foundation; panduan teknis keamanan aplikasi · Access-Control-Allow-Origin
  3. Cross-Site Request Forgery Prevention Cheat Sheet ↗OWASP Foundation; panduan teknis keamanan aplikasi · Custom Headers and CORS

Baca naskah lengkap untuk melihat syarat dan pengecualiannya. Sesuaikan dengan layanan dan bidang usaha Anda.

Perlu membahas kebutuhan tim Anda?

Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.

Konsultasikan kebutuhan Anda