📖 Ancaman Umum
- SQL Injection: penyerang menyisipkan query SQL berbahaya.
- XSS (Cross-Site Scripting): penyerang menyisipkan script berbahaya ke halaman web.
- CSRF (Cross-Site Request Forgery): penyerang memaksa user melakukan aksi tanpa sadar.
- Brute Force: mencoba kombinasi password berulang-ulang.
- Session Hijacking: mencuri session ID untuk mengambil alih akun.
📖 Best Practices
- Gunakan prepared statements atau ORM untuk mencegah SQL Injection.
- Escape/encode input user untuk mencegah XSS.
- Gunakan CSRF token pada form.
- Hash password dengan algoritma kuat (bcrypt, Argon2).
- Gunakan HTTPS untuk enkripsi komunikasi.
- Batasi percobaan login (rate limiting).
- Gunakan helmet (Express middleware) untuk menambah header keamanan.
🔹 Contoh: SQL Injection vs Prepared Statement
// ❌ Rentan SQL Injection
db.query("SELECT * FROM users WHERE nama = '" + req.body.nama + "'");
// ✅ Aman dengan prepared statement
db.query("SELECT * FROM users WHERE nama = ?", [req.body.nama]);
🔹 Contoh: Express Helmet
const helmet = require("helmet");
app.use(helmet());