Latihan 1 dari materi Security Checklist untuk Deploy di Security — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Buat function securityAudit(config) yang menilai konfigurasi aplikasi sebelum deploy dan mengembalikan { score, issues }.
config punya lima property: https (boolean), debug (boolean), csrfProtection (boolean), passwordHashing (string: "bcrypt", "argon2", "md5", "sha1", atau "plain"), dan corsOrigin (string: "*" atau URL).
- Kode awal sudah punya
let score = 100, const issues = [], dan baris return { score: Math.max(0, score), issues }. Biarkan.
- Di bawah tiap komentar
// Cek ..., tulis satu if terpisah (bukan else if) yang mengurangi skor dan menambah issue:
https false: kurangi 25, issue "HTTPS not enabled"
debug true: kurangi 20, issue "Debug mode is on"
csrfProtection false: kurangi 20, issue "CSRF protection disabled"
passwordHashing bukan "bcrypt" dan bukan "argon2" (jadi md5, sha1, dan plain semuanya lemah): kurangi 25, issue "Weak password hashing"
corsOrigin sama dengan "*": kurangi 10, issue "CORS wildcard origin"
- Dua
console.log di bawah fungsi biarkan saja.
Yang dinilai nilai kembaliannya:
- config aman di
console.log pertama harus menghasilkan persis { score: 100, issues: [] }
- config yang bermasalah semua di
console.log kedua harus punya score 0
- dua cek tersembunyi: semua aman tapi argon2 dengan corsOrigin
"*" harus score 90, dan https false dengan sha1 (sisanya aman) harus score 50
Teks issue untuk config yang bermasalah gak dicek satu per satu, tapi pakai teks di atas biar laporannya jelas.