Latihan 1 dari materi CSRF Protection di Auth — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi tiga function yang menyusun CSRF protection.
issueCsrfToken(sessionId): kembalikan token untuk sesi itu dengan format "csrf_" + sessionId + "_" + nonce, dengan nonce tetap "n1" (di dunia nyata, byte acak). Untuk "sess42" hasilnya csrf_sess42_n1.
validateCsrfToken(submittedToken, sessionToken): kembalikan false kalau salah satu kosong, null atau undefined; selain itu kembalikan true hanya kalau keduanya sama persis (===).
isTrustedOrigin(origin, trustedOrigins): kembalikan false kalau origin kosong, null atau undefined; selain itu true kalau origin ada di array trustedOrigins (includes), false kalau gak ada.
Semua console.log di kode awal sudah ada, biarkan. Output-nya harus persis tujuh baris ini, berurutan:
csrf_sess42_n1
true
false (token sesi lain)
false (token null)
true (https://myapp.com ada di daftar)
false (https://evil.com gak ada di daftar)
false (origin null)
Dicek juga: validateCsrfToken("a", "a") true, validateCsrfToken("a", "b") false, dan isTrustedOrigin("https://evil.com", ["https://ok.com"]) false, jadi gabungannya "true,false,false".