Security Hardening dan Dependency Management
Amankan aplikasi dari supply chain attacks dan konfigurasi yang salah
Tujuan Pembelajaran
- Bisa melakukan security hardening
- Mengerti supply chain security
- Bisa setup automated security scanning
Analogi
Security Hardening:
├── HTTPS everywhere (HSTS)
├── Security headers (CSP, X-Frame-Options)
├── Dependency scanning (npm audit, Snyk)
├── Secret management (.env, vault)
├── Rate limiting
└── Input validation (Zod)
Security adalah lapisan-lapisan proteksi — tidak ada silver bullet
Penjelasan Konsep
Setelah menguasai ancaman utama, saatnya memikirkan security secara sistematis. Security bukan checklist satu kali — itu adalah continuous process.
HTTPS Everywhere
Gunakan HTTPS untuk semua traffic. HSTS header memaksa browser selalu menggunakan HTTPS. Redirect HTTP ke HTTPS.
Supply Chain Security
Dependency yang kamu install bisa jadi vector attack. npm audit untuk scan vulnerability.
Snyk untuk continuous monitoring.
Lock files (package-lock.json, bun.lockb) untuk reproducible builds.
Secret Management
Jangan hardcode API keys di kode.
Gunakan environment variables.
Untuk production, gunakan secret management service (AWS Secrets Manager,
HashiCorp Vault).
Rate Limiting
Batasi request per IP/user untuk mencegah abuse dan brute force.
Input Validation
Validasi SEMUA input — baik dari user maupun external API.
Zod adalah pilihan terbaik untuk TypeScript.
Inti yang Perlu Dipahami
Bagian ini berfokus pada bisa melakukan security hardening., mengerti supply chain security., dan bisa setup automated security scanning. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Security Hardening dan Dependency Management, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Security adalah lapisan-lapisan proteksi — tidak ada silver bullet. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa bash. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. npm audit scan database vulnerability yang diketahui. rate-limiter membatasi request per IP untuk prevent abuse. .env.example sebagai template tanpa real values.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
# Dependency security scanning
npm audit # Scan known vulnerabilities
npm audit fix # Auto-fix where possible
# Snyk CLI
npx snyk test # Test for vulnerabilities
npx snyk monitor # Continuous monitoring
# Rate limiting dengan Hono
import { rateLimiter } from 'hono-rate-limiter';
app.use('/api/*', rateLimiter({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100, // Limit each IP to 100 requests per windowMs
standardHeaders: true,
keyGenerator: (c) => c.req.header('x-forwarded-for') || c.req.ip,
}));
# Secret management — never commit .env
# .env.example (safe to commit)
DATABASE_URL=
JWT_SECRET=
OPENAI_API_KEY=
# .env (gitignored — never commit!)
DATABASE_URL=postgresql://...
JWT_SECRET=super-secret-key
OPENAI_API_KEY=sk-...Penjelasan Kode
Prompt AI
Setup automated security scanning di CI/CD pipeline: npm audit + Snyk scan sebelum deploy.
Pertanyaan Reflektif
Security adalah marathon, bukan sprint. Allocate 10-20% development time untuk security review dan improvement.