OWASP Cheatsheet #
OWASP Cheat Sheets adalah panduan praktis yang membantu pengembang dan tim keamanan menerapkan praktik terbaik keamanan aplikasi. Dokumen ini menyajikan versi lengkap dan mendalam dari cheat sheets OWASP, beserta contoh implementasi dan kasus nyata untuk masing-masing topik.
Authentication Cheat Sheet #
Tujuan: Membangun autentikasi yang aman.
Praktik Utama:
- Hash password dengan bcrypt, Argon2, atau PBKDF2
- Gunakan Multi-Factor Authentication (MFA)
- Regenerasi session ID setelah login
- Batasi percobaan login dan implementasikan account lockout
Contoh Kasus:
- Serangan brute force berhasil di aplikasi tanpa MFA dan batas login. Akun pengguna diakses tanpa izin.
Contoh Implementasi:
import bcrypt
password = b"user_password"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
Access Control Cheat Sheet #
Tujuan: Mencegah eskalasi hak akses.
Praktik Utama:
- Terapkan role-based access control (RBAC)
- Batasi hak akses berdasarkan prinsip least privilege
- Validasi hak akses di server-side, jangan hanya client-side
Contoh Kasus:
- Pengguna biasa mengakses endpoint admin karena parameter ID diubah di URL.
Input Validation Cheat Sheet #
Tujuan: Melindungi aplikasi dari Injection, XSS, dan serangan berbasis input.
Praktik Utama:
- Whitelist input, hindari blacklist
- Validasi tipe, panjang, dan format
- Sanitasi output untuk mencegah XSS
Contoh Kasus:
- Serangan XSS pada form komentar karena input tidak disanitasi. Script dijalankan di browser pengguna lain.
REST Security Cheat Sheet #
Tujuan: Membangun API REST yang aman.
Praktik Utama:
- Gunakan HTTPS
- Implementasikan rate limiting dan throttling
- Gunakan token-based authentication
- Batasi exposure endpoint, jangan terlalu banyak endpoint publik
Contoh Kasus:
- API tidak membatasi rate sehingga terjadi brute force attack terhadap endpoint login.
Session Management Cheat Sheet #
Tujuan: Mengamankan sesi pengguna.
Praktik Utama:
- Secure, HttpOnly, SameSite cookie flags
- Regenerasi session ID
- Idle timeout dan absolute timeout
Contoh Kasus:
- Session fixation memungkinkan penyerang menggunakan session ID korban untuk login.
Cryptographic Storage Cheat Sheet #
Tujuan: Menyimpan data sensitif secara aman.
Praktik Utama:
- Gunakan algoritma enkripsi modern (AES-256)
- Hash password dengan salt
- Key management aman, jangan hardcode
Contoh Kasus:
- Database kartu kredit tersimpan tanpa enkripsi. Data bocor akibat SQL Injection.
Logging Cheat Sheet #
Tujuan: Memonitor dan mencatat aktivitas aplikasi untuk keamanan.
Praktik Utama:
- Log aktivitas login, akses data sensitif
- Jangan log password atau PII
- Centralized logging dan alerting
Contoh Kasus:
- Brute force login tidak terdeteksi karena log hanya menyimpan pesan generik tanpa context.
Error Handling Cheat Sheet #
Tujuan: Menangani error tanpa membocorkan informasi sensitif.
Praktik Utama:
- Jangan menampilkan stack trace ke user
- Log error untuk developer
- Gunakan pesan generik untuk user
Contoh Kasus:
- Stack trace menampilkan query database di halaman error, memudahkan penyerang melakukan SQL Injection.
Security Headers Cheat Sheet #
Tujuan: Memanfaatkan header HTTP untuk keamanan.
Praktik Utama:
- Content-Security-Policy (CSP)
- X-Content-Type-Options: nosniff
- Strict-Transport-Security (HSTS)
- X-Frame-Options: DENY
Contoh Kasus:
- Situs rentan clickjacking karena tidak ada X-Frame-Options.
Cross-Site Request Forgery (CSRF) Cheat Sheet #
Tujuan: Melindungi aplikasi dari CSRF.
Praktik Utama:
- Anti-CSRF token di form
- Validasi token di server
- SameSite cookies
Contoh Kasus:
- Penyerang membuat form otomatis mengirim request untuk mengubah password korban karena token tidak divalidasi.
CORS Cheat Sheet #
Tujuan: Konfigurasi Cross-Origin Resource Sharing dengan aman.
Praktik Utama:
- Whitelist domain yang diizinkan
- Jangan gunakan wildcard
*pada header Access-Control-Allow-Origin
Contoh Kasus:
- Aplikasi API membuka akses ke semua domain, memungkinkan data dicuri oleh situs jahat.
File Upload Cheat Sheet #
Tujuan: Mengelola upload file secara aman.
Praktik Utama:
- Validasi tipe dan ukuran file
- Simpan file di folder terisolasi
- Scan file untuk malware
Contoh Kasus:
- Penyerang mengunggah file PHP di folder publik, mengeksekusi kode di server.
JWT Cheat Sheet #
Tujuan: Menggunakan JSON Web Token dengan aman.
Praktik Utama:
- Gunakan algoritma sign yang aman (HS256, RS256)
- Verifikasi signature di server
- Jangan simpan data sensitif di payload
Contoh Kasus:
- Payload JWT diubah oleh client karena tidak diverifikasi, mengakses data pengguna lain.
OAuth Security Cheat Sheet #
Tujuan: Implementasi OAuth2 dan OpenID Connect dengan aman.
Praktik Utama:
- Gunakan PKCE untuk aplikasi publik
- Validasi redirect_uri
- Gunakan scopes yang minimal
Contoh Kasus:
- Serangan open redirect karena redirect_uri tidak divalidasi, memungkinkan token dicuri.
Sensitive Data Exposure Cheat Sheet #
Tujuan: Mengidentifikasi dan melindungi data sensitif.
Praktik Utama:
- Enkripsi data sensitif di rest dan transit
- Batasi akses data dengan kontrol ketat
- Masking data di log
Contoh Kasus:
- Data kartu kredit ditampilkan penuh di log, bocor ke pihak ketiga.
WebSockets Security Cheat Sheet #
Tujuan: Mengamankan komunikasi WebSockets.
Praktik Utama:
- Gunakan wss:// (TLS)
- Validasi origin header
- Batasi pesan masuk untuk mencegah injection
Contoh Kasus:
- WebSocket tanpa TLS memungkinkan attacker menyadap pesan chat.
Best Practice Umum Cheat Sheets #
- Integrasikan security checklist ke CI/CD pipeline
- Selalu update dependency dan framework
- Audit access control dan autentikasi secara berkala
- Implementasikan monitoring, logging, dan alerting
- Edukasi tim developer dan QA mengenai OWASP Top 10 dan Cheat Sheets
Penutup #
Dokumen ini mencakup versi komprehensif cheat sheets OWASP untuk membantu tim membangun aplikasi yang aman, resilient terhadap serangan, dan sesuai standar industri. Setiap topik dilengkapi dengan praktik, dan kasus nyata untuk pemahaman yang mendalam.