← Back to Home
WEB SECURITY · API

CORS wildcard: kenapa berbahaya untuk API aplikasi AI

27 Oktober 2026 · 6 min read · AISG Editorial

Access-Control-Allow-Origin: * adalah header yang paling sering ditambahkan untuk "supaya tidak kena error CORS". Masalahnya: header itu bukan perbaikan, ia memberi tahu browser bahwa situs mana pun di internet boleh membaca respons dari API Anda. Untuk halaman statis tanpa data, itu wajar. Untuk API yang memakai sesi pengguna atau memegang kuota berbayar, itu pintu terbuka.

Apa yang sebenarnya diatur CORS

CORS adalah aturan browser, bukan firewall. Tanpa izin dari server, JavaScript di situs-lain.com tidak bisa membaca respons API Anda — server tetap menerima permintaan, tapi hasilnya tidak bisa dibaca oleh skrip penyerang. Ketika server mengirim *, izin itu diberikan ke semua orang, tanpa perlu tahu siapa yang meminta.

Kombinasi yang paling berbahaya adalah Access-Control-Allow-Origin: * bersama Access-Control-Allow-Credentials: true. Browser modern menolak kombinasi ini, tetapi banyak server tetap mengirimnya, dan sebagian implementasi kustom menggemakan Origin apa pun yang masuk — efeknya sama: siapa pun boleh membaca respons yang memakai kredensial.

Kenapa aplikasi AI sering kena

Kapan wildcard itu benar-benar berbahaya

Jawabannya bergantung pada satu hal: apakah respons memuat data yang tidak boleh dibaca orang lain.

Cara memeriksa dengan satu perintah

Kirim permintaan dengan Origin palsu dan lihat jawaban server:

curl -sI -H "Origin: https://evil.example" https://api.domain-anda.com/v1/chat | grep -i "access-control"

Perhatikan juga Vary: Origin. Server yang menggemakan origin tanpa Vary bisa membuat cache menyajikan izin milik domain lain kepada pengunjung berikutnya.

Perbaikan yang benar (bukan menambah wildcard)

  1. Allowlist eksplisit. Simpan daftar origin yang sah di konfigurasi server, bandingkan persis (bukan startsWith atau includes), lalu kembalikan origin itu saja.
  2. Jangan gabungkan * dengan credentials. Kalau butuh sesi, allowlist adalah satu-satunya pilihan.
  3. Pindahkan panggilan LLM ke server Anda. Browser berbicara ke backend Anda; backend yang memegang kunci dan kuota.
  4. Uji ulang setelah deploy dengan perintah curl di atas — jangan berasumsi konfigurasi baru sudah aktif.

Bagaimana AISG melaporkannya

Pada free URL scan, kondisi ini muncul sebagai temuan medium dengan rule FS-030 (CWE-942), berisi bukti berupa nilai header yang terlihat dan status credentials. Sifatnya indikasi: AISG tidak menguji apakah data Anda benar-benar bisa dicuri, karena itu bagian yang harus Anda putuskan sendiri dengan melihat endpoint mana yang memakai sesi. Satu hal yang sering disalahpahami: wildcard pada halaman landing statis tidak otomatis menjadi kebocoran — yang menentukan adalah apa yang dikirim endpoint itu.

CORS API Security CWE-942 Free Scan

Check your own live app.

One free URL scan, no install, no account — eight read-only checks and one PDF report.

Scan my app free
Early access: AISG is currently in early-access mode — the Community plan is free to start. Scans must be performed only against targets you are authorized to assess — results are indicative and require human review (see Trust & Legal).