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.
- Telusuri key milik
source dengan for (const key of Object.keys(source)).
- Kalau
blocked.includes(key) (yaitu __proto__, constructor, atau prototype), lewati dengan continue, sebelum menyalin.
- Key lain disalin biasa:
target[key] = source[key].
- 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}.