Latihan 1: Prototype Pollution — Security

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

Lengkapi fungsi safeMerge(target, source): merge dangkal yang menyalin key dari source ke target, tapi melewati key berbahaya. Starter sudah punya array blocked dan tiga baris di bawahnya; biarkan semuanya.

  1. Telusuri key milik source dengan for (const key of Object.keys(source)).
  2. Kalau blocked.includes(key) (yaitu __proto__, constructor, atau prototype), lewati dengan continue, sebelum menyalin.
  3. Key lain disalin biasa: target[key] = source[key].
  4. Kembalikan target.

Yang dinilai: safeMerge({a: 1}, {b: 2}) mengembalikan {"a":1,"b":2}, safeMerge({}, {x: 10, y: 20}) mengembalikan {"x":10,"y":20}, kodenya memeriksa key dengan includes/indexOf/has atau loop for (const key ...), console mencetak undefined (dari ({}).polluted) tanpa satu pun true, safeMerge dengan key __proto__ gak mengganti prototype target-nya, dan safeMerge({}, {constructor: ..., prototype: ..., ok: 1}) mengembalikan {"ok":1}.

Hint