Latihan 1: CSRF Protection — Auth

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.

  1. 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.
  2. validateCsrfToken(submittedToken, sessionToken): kembalikan false kalau salah satu kosong, null atau undefined; selain itu kembalikan true hanya kalau keduanya sama persis (===).
  3. 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:

  1. csrf_sess42_n1
  2. true
  3. false (token sesi lain)
  4. false (token null)
  5. true (https://myapp.com ada di daftar)
  6. false (https://evil.com gak ada di daftar)
  7. 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".

Hint