Latihan 1: SSRF (Server-Side Request Forgery) — Security
Latihan 1 dari materi SSRF (Server-Side Request Forgery) di Security — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi fungsi isUrlSafeForFetch(url, allowlist) yang memutuskan apakah sebuah URL aman di-fetch oleh server. Kerangka try...catch, array ok, dan tiga console.log sudah ada di kode awal, biarkan saja.
Di dalam try, baca URL-nya dengan new URL(url). Kalau parsing gagal, new URL melempar error dan catch mengembalikan false.
Kalau protocol-nya bukan 'https:', kembalikan false (tolak http:, file:, gopher:, dan lainnya).
Kembalikan true hanya kalau hostname ada di allowlist, tanpa membedakan huruf besar dan kecil. Selain itu false.
Yang dicek, dengan ok = ['images.cdn.com', 'storage.googleapis.com']:
Dengan allowlist ['images.cdn.com'], ini semua mengembalikan false: 'http://images.cdn.com/pic.jpg', 'https://evil.com/x', 'file:///etc/passwd', dan 'bukan-url'.
Tiga console.log di kode awal mencetak true, false, false.
Hint
Biarkan new URL yang membaca URL-nya, lalu periksa dua bagian hasilnya: protocol dan hostname. Kalau new URL melempar error, catch yang sudah ada mengembalikan false.
Di dalam try: const parsed = new URL(url). Kalau parsed.protocol bukan 'https:', return false. Lalu return hasil allowlist.some(...) yang membandingkan hostname dalam huruf kecil.
const parsed = new URL(url); if (parsed.protocol !== 'https:') return false; return allowlist.some((h) => h.toLowerCase() === parsed.hostname.toLowerCase());
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...