Dasar-Dasar Keamanan Web
Kenali cara kerja web dari sudut pandang keamanan, kategori risiko aplikasi web menurut OWASP, dan kontrol dasar yang harus ada pada setiap situs.
Tujuan Pembelajaran
- Menjelaskan model permintaan-respons HTTP dan batas kepercayaan
- Memahami prinsip bahwa semua input klien tidak tepercaya
- Mengenali kategori risiko dalam OWASP Top 10
- Menerapkan HTTPS, header keamanan, dan validasi sisi server
01Web dan batas kepercayaan
Aplikasi web bekerja lewat siklus permintaan dan respons HTTP antara browser dan server. Segala sesuatu yang datang dari browser, termasuk isian formulir, parameter URL, cookie, dan header, dikendalikan oleh pengguna dan dapat dimanipulasi.
Konsekuensinya, kontrol keamanan yang hanya ada di sisi klien, seperti validasi JavaScript, hanya berfungsi sebagai kenyamanan pengguna. Keputusan keamanan harus selalu ditegakkan ulang di server.
02OWASP Top 10
OWASP adalah komunitas nirlaba yang menerbitkan daftar kategori risiko aplikasi web yang paling umum. Daftar ini berguna sebagai peta belajar dan acuan peninjauan kode.
- Broken access control: pengguna dapat mengakses data atau fungsi di luar haknya
- Cryptographic failures: data sensitif tidak dilindungi dengan benar
- Injection: input tidak tepercaya diperlakukan sebagai perintah
- Insecure design dan security misconfiguration: kelemahan pada rancangan dan pengaturan
- Vulnerable and outdated components: pustaka lama dengan kerentanan yang sudah diketahui
- Identification and authentication failures: pengelolaan login dan sesi yang lemah
03Kontrol dasar yang wajib ada
Beberapa kontrol dasar menutup banyak risiko sekaligus bila diterapkan konsisten.
- HTTPS di seluruh situs, dengan HSTS agar browser selalu memakai koneksi aman
- Validasi dan sanitasi input di server dengan pendekatan allowlist
- Pemeriksaan otorisasi pada setiap permintaan, bukan hanya pada tampilan menu
- Pesan galat umum untuk pengguna, detail teknis hanya di log internal
- Pembaruan dependensi rutin dan pemindaian kerentanan komponen
04Header keamanan HTTP
Server dapat menginstruksikan browser untuk menerapkan perlindungan tambahan lewat header respons. Header ini murah dipasang dan mengurangi dampak beberapa kelas kerentanan.
Contohnya Content-Security-Policy untuk membatasi sumber skrip, X-Content-Type-Options untuk mencegah penebakan tipe konten, dan Referrer-Policy untuk membatasi informasi yang dikirim ke situs lain.
Contoh Praktis (Aman)
Header keamanan dasar di ExpressContoh konfigurasi defensif di Node.js/Express. Pustaka helmet mengatur banyak header aman sekaligus, dan validasi dilakukan di server.
import express from 'express';
import helmet from 'helmet';
const app = express();
app.use(helmet()); // header keamanan bawaan yang masuk akal
app.use(express.json({ limit: '100kb' }));
app.post('/profil', (req, res) => {
const nama = String(req.body.nama || '').trim();
// Validasi allowlist di server: panjang dan karakter yang diizinkan
if (nama.length < 2 || nama.length > 50) {
return res.status(400).json({ error: 'Input tidak valid' });
}
// ... simpan data setelah memeriksa otorisasi pengguna
res.json({ ok: true });
});Rangkuman
- Semua yang datang dari browser tidak tepercaya dan harus divalidasi di server
- OWASP Top 10 adalah peta risiko aplikasi web yang paling umum
- Terapkan HTTPS, HSTS, pemeriksaan otorisasi di setiap permintaan, dan galat yang tidak membocorkan detail
- Header seperti CSP dan X-Content-Type-Options menambah lapisan pertahanan murah
Mini Quiz
Pilih satu jawaban untuk setiap soal, lalu tekan "Periksa Jawaban".
Mengapa validasi hanya di JavaScript sisi klien tidak cukup?
Kategori OWASP mana yang terjadi ketika pengguna dapat mengakses data milik orang lain?
Apa fungsi HSTS?