Laravel menyediakan banyak proteksi bawaan, tetapi keamanan tetap tanggung jawab pengembang. Kabar baiknya, sebagian besar celah pada aplikasi kecil berasal dari hal-hal mendasar yang mudah diperiksa. Gunakan daftar ini sebelum aplikasi Anda dipakai orang lain.
1. Matikan Debug di Produksi
Halaman error Laravel yang detail sangat membantu saat mengembangkan, tetapi berbahaya di produksi karena bisa membocorkan path, query, bahkan kredensial. Pastikan:
APP_ENV=production
APP_DEBUG=false
2. Gunakan Kredensial yang Kuat
Jangan biarkan database produksi memakai user root tanpa password. Buat user khusus dengan hak seperlunya dan password acak yang panjang. Pastikan pula APP_KEY sudah di-generate agar enkripsi berfungsi.
3. Selalu Validasi Input
Setiap data dari pengguna harus divalidasi sebelum diproses. Laravel membuat ini mudah:
$request->validate([
'email' => 'required|email',
'harga' => 'required|numeric|min:0',
]);
Validasi mencegah data rusak sekaligus menutup sebagian vektor serangan.
4. Jangan Nonaktifkan Proteksi CSRF
Laravel otomatis melindungi form dari serangan Cross-Site Request Forgery. Selama Anda menyertakan @csrf di setiap form, proteksi ini bekerja. Hindari mengecualikan route dari middleware CSRF kecuali benar-benar perlu (misalnya webhook, yang punya verifikasi sendiri).
5. Waspadai Mass Assignment
Tentukan kolom yang boleh diisi massal lewat $fillable. Tanpa ini, pengguna nakal bisa mengirim field tak terduga (mis. is_admin) lewat form:
protected $fillable = ['name', 'email', 'price'];
6. Cegah Kebocoran lewat Query
Eloquent dan Query Builder sudah memakai prepared statement sehingga aman dari SQL injection — selama Anda tidak menyisipkan input mentah ke DB::raw(). Bila terpaksa memakai raw query, gunakan binding parameter, bukan penggabungan string.
7. Aktifkan HTTPS dan Amankan Cookie
Pasang sertifikat SSL dan paksa seluruh trafik ke HTTPS. Ini melindungi kredensial dan cookie session dari penyadapan di jaringan.
8. Perbarui Dependency Secara Berkala
composer update
composer audit
Perintah audit memeriksa apakah ada library dengan kerentanan yang diketahui. Jadwalkan pemeriksaan rutin, terutama setelah aplikasi berjalan lama.
9. Batasi Percobaan Login
Terapkan rate limiting pada form login agar terhindar dari serangan tebak-password. Laravel menyediakan throttling yang bisa dipasang di route atau controller.
Checklist ini bukan jaminan mutlak, tetapi menutup mayoritas celah yang paling sering dieksploitasi pada aplikasi berskala kecil hingga menengah. Jadikan pemeriksaan ini bagian rutin sebelum setiap rilis.