Latihan 1: CORS Deep Dive — Security

Latihan 1 dari materi CORS Deep Dive di Security — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi function setCORSHeaders(res, origin, allowedOrigins). res adalah objek response tiruan dengan method res.setHeader(name, value).

  1. Kalau origin ada di array allowedOrigins (cek dengan allowedOrigins.includes(origin)), pasang tiga header lewat res.setHeader:
    • Access-Control-Allow-Origin berisi origin itu sendiri
    • Access-Control-Allow-Methods berisi GET, POST, PUT, DELETE
    • Access-Control-Allow-Headers berisi Content-Type, Authorization
  2. Kalau origin gak ada di daftar, jangan pasang header apa pun.
  3. Kode awal sudah memanggil setCORSHeaders dua kali: dengan https://myapp.com (diizinkan) dan dengan https://evil.com (gak diizinkan). Biarkan kedua panggilan itu. Ganti dua baris console.log di kode awal supaya output-nya persis:
Access-Control-Allow-Origin: https://myapp.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
Blocked origin headers: {}

Tiga baris pertama mencetak isi headers, misalnya console.log("Access-Control-Allow-Origin:", headers["Access-Control-Allow-Origin"]);. Baris terakhir: console.log("Blocked origin headers:", JSON.stringify(headers2));.

Function-nya juga diuji dengan origin dan daftar lain, jadi jangan tulis https://myapp.com langsung di dalam function.

Hint