Minggu 10 — Security dan Maintainability
OWASP, rahasia, SQL injection, XSS, CSRF, dan kode yang mudah dirawat.
AI tidak otomatis menulis kode aman
AI meniru pola dari internet, termasuk pola yang rawan. Kode yang "jalan" belum tentu aman. Kamu perlu mengenali risiko utamanya — daftar lengkapnya ada di OWASP Top 10.
SQL Injection
// RAWAN: input disambung langsung ke SQL
db.query("SELECT * FROM users WHERE email = '" + email + "'");
// email = ' OR '1'='1 → semua data bocor
// AMAN: query berparameter (prepared statement)
db.query("SELECT * FROM users WHERE email = $1", [email]);
XSS — Cross-Site Scripting
Penyerang menyisipkan <script> lewat komentar atau nama, lalu skripnya jalan di browser korban. Pertahanan: escape output (ubah < jadi <), gunakan textContent bukan innerHTML, dan template engine yang meng-escape otomatis.
CSRF
Situs jahat membuat browser korban yang sedang login mengirim request tanpa sadar. Pertahanan: token CSRF di setiap form (framework seperti Laravel menyediakannya), cookie SameSite.
Rahasia jangan masuk Git
- API key, sandi database, dan token disimpan di
.env, dan.envmasuk.gitignore. - Jangan tempel rahasia ke chat AI.
- Jika rahasia sempat ter-commit: anggap sudah bocor, ganti segera — menghapus commit saja tidak cukup.
Authentication dan authorization di server
Hash sandi dengan bcrypt/argon2, batasi percobaan login, dan periksa hak akses di setiap endpoint. Cek juga kepemilikan data: pengguna A tidak boleh membuka /orders/5 milik pengguna B (IDOR).
Maintainability
- Separation of concerns: pisahkan tampilan, logika bisnis, dan akses data.
- SOLID, terutama Single Responsibility: satu function/class, satu tugas.
- Refactoring: rapikan struktur tanpa mengubah perilaku — dan selalu dengan test yang hijau.
- Backup database terjadwal, audit dependency berkala, dan penanganan error yang tidak membocorkan detail teknis ke pengguna.
Praktik minggu ini
Lakukan security review terhadap aplikasi kursus dan perbaiki temuan. Target: checklist keamanan dan kode yang lebih mudah dipelihara.