OWASP Top 10 adalah standar de facto untuk kesadaran keamanan aplikasi web. Setiap beberapa tahun sekali, OWASP merilis daftar 10 kerentanan paling kritis berdasarkan data dari ribuan organisasi di seluruh dunia. Versi 2025 membawa perubahan signifikan dengan tambahan kerentanan baru.
Apa itu OWASP?
Open Web Application Security Project (OWASP) adalah organisasi nirlaba global yang berfokus pada peningkatan keamanan perangkat lunak. OWASP Top 10 adalah dokumen kesadaran paling berpengaruh di dunia keamanan web, digunakan oleh developer, arsitek, dan auditor keamanan.
OWASP Top 10 2025
A01 — Broken Access Control
Kerentanan akses kontrol masih menjadi nomor satu. Terjadi ketika pengguna bisa mengakses resource atau fungsi yang seharusnya tidak diizinkan.
// Contoh rentan — IDOR
app.get('/api/user/:id', (req, res) => {
const user = db.findUser(req.params.id);
res.json(user);
});
// Perbaikan
app.get('/api/user/:id', (req, res) => {
if (req.user.id !== req.params.id && !req.user.isAdmin) {
return res.status(403).json({ error: 'Forbidden' });
}
const user = db.findUser(req.params.id);
res.json(user);
});
A02 — Cryptographic Failures
Kegagalan kriptografi termasuk transmisi data tanpa enkripsi, penggunaan algoritma lemah, atau sertifikat SSL yang salah konfigurasi.
// Enforce HTTPS
app.use((req, res, next) => {
if (!req.secure && process.env.NODE_ENV === 'production') {
return res.redirect('https://' + req.headers.host + req.url);
}
next();
});
// Hash password dengan bcrypt
const bcrypt = require('bcrypt');
const hash = await bcrypt.hash(password, 12);
A03 — Injection
SQL Injection masih menjadi ancaman serius. Input pengguna yang tidak divalidasi bisa mengeksekusi perintah database berbahaya.
// RENTAN
query = "SELECT * FROM users WHERE username = '" + username + "'";
// AMAN — Prepared Statement
query = "SELECT * FROM users WHERE username = ?";
db.execute(query, [username]);
A04 — Insecure Design
Kerentanan yang berasal dari desain arsitektur yang tidak aman, bukan dari bug implementasi. Contoh: tidak ada rate limiting, mekanisme reset password yang lemah.
// Rate limiting dengan express
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100,
message: 'Terlalu banyak request'
});
app.use('/api/', limiter);
A05 — Security Misconfiguration
Konfigurasi keamanan yang tidak tepat seperti default credentials, directory listing enabled, error handling yang menampilkan stack trace ke pengguna.
A06 — Vulnerable and Outdated Components
Penggunaan library/packages dengan versi usang yang memiliki CVE. Deteksi dengan npm audit, snyk, atau dependabot.
npm audit
npm audit fix
snyk test
A07 — Identification and Authentication Failures
Lemahnya mekanisme autentikasi seperti tidak ada MFA, session fixation, atau credential stuffing.
A08 — Software and Data Integrity Failures
Kerentanan terkait integritas data seperti deserialization tidak aman, supply chain attack, atau CI/CD pipeline yang tidak aman.
A09 — Security Logging and Monitoring Failures
Kegagalan mendeteksi dan merespons insiden karena logging yang tidak memadai atau monitoring yang tidak efektif.
A10 — Server-Side Request Forgery (SSRF)
Kerentanan baru yang naik ke Top 10. Terjadi ketika server bisa dipaksa melakukan request ke resource internal.
// RENTAN
app.get('/fetch', (req, res) => {
const response = await fetch(req.query.url);
res.send(response);
});
// AMAN — Validasi URL + whitelist
const allowedDomains = ['api.example.com', 'cdn.example.com'];
app.get('/fetch', async (req, res) => {
const url = new URL(req.query.url);
if (!allowedDomains.includes(url.hostname)) {
return res.status(403).send('Domain not allowed');
}
const response = await fetch(url);
res.send(response);
});
Tools untuk Keamanan Web
- OWASP ZAP — Automated scanner & proxy
- Burp Suite — Web vulnerability testing
- sqlmap — SQL injection automation
- Nuclei — Template-based scanner
- Snyk — Dependency vulnerability scanner
Baca Juga
Kesimpulan
Keamanan web bukanlah fitur tambahan, melainkan fondasi yang harus dibangun sejak awal. OWASP Top 10 2025 memberikan panduan yang jelas tentang apa yang perlu diperhatikan. Mulailah dengan mengamankan akses kontrol, enkripsi data, dan validasi input — tiga area teratas yang paling banyak dieksploitasi.
Selalu update pengetahuan keamanan Anda karena ancaman terus berevolusi. Selamat belajar dan tetap aman! 🔒






