Apa itu SQL Injection?
SQL Injection adalah teknik serangan siber dimana penyerang menyisipkan query SQL berbahaya melalui input pengguna untuk memanipulasi database. Celah ini terjadi ketika aplikasi menggabungkan input pengguna langsung ke dalam query SQL tanpa sanitasi yang tepat.
Demonstrasi Celah
Kode rentan:
// JANGAN DITIRU — Kode Rentan
DB::select("SELECT * FROM users WHERE email = '" . $request->email . "'");
Penyerang bisa memasukkan: [email protected]' OR '1'='1 dan mendapatkan akses ke semua data.
Pencegahan dengan Laravel
Laravel menyediakan proteksi bawaan melalui Eloquent ORM dan Query Builder yang menggunakan parameter binding:
// Aman — menggunakan Eloquent
User::where('email', $request->email)->first();
// Aman — Query Builder dengan parameter binding
DB::select('SELECT * FROM users WHERE email = ?', [$request->email]);
Tips Tambahan
- Gunakan Eloquent ORM sebanyak mungkin
- Validasi input dengan Form Request
- Jangan pernah menggabungkan string untuk query
- Batasi hak akses database user aplikasi
Kesimpulan
SQL Injection adalah salah satu celah paling berbahaya namun paling mudah dicegah. Dengan menggunakan Eloquent dan praktik coding yang aman, Anda bisa melindungi aplikasi dari serangan ini.