Halo, teman-teman mahasiswa! Selamat datang di praktikum seru tentang Mass Assignment β vulnerability yang sering disebut "silent killer" di aplikasi modern, terutama yang pakai framework seperti Laravel, Ruby on Rails, atau Node.js. Bayangkan kamu lagi isi form registrasi biasa: nama, email, password. Tapi kalau developer lupa proteksi, hacker bisa "nyelipkan" field rahasia seperti "is_admin = true" dan langsung jadi admin! Kayak kasih kunci rumah ke orang asing tanpa sadar.
Ini bukan serangan rumit kayak SQLi atau XSS, tapi super berbahaya karena gampang dieksploitasi lewat form atau API. Yuk kita bahas santai, dengan contoh Laravel (paling populer di PHP), kode mudah dicoba, dan ilustrasi keren biar langsung paham! π
Ilustrasi klasik ini nunjukin gimana mass assignment "mengisi massal" field yang seharusnya dilindungi β hacker senang banget!
Kartun hacker lagi eksploitasi mass assignment β jangan ditiru, ini buat belajar aja! π
Apa Itu Mass Assignment? π€
Mass Assignment adalah fitur keren di ORM (Object-Relational Mapping) seperti Eloquent di Laravel yang memungkinkan isi banyak field model sekaligus dari array input (misal dari form atau request API).
Contoh normal & berguna:
User::create($request->all()); // Isi semua field dari input
Tapi kalau nggak ada proteksi, semua field di tabel database bisa diisi user β termasuk yang sensitif seperti is_admin, role, balance, dll.
Diagram sederhana ini gambarin proses mass assignment β dari request sampai database keisi data tak terduga!
Contoh 1: Registrasi User Jadi Admin Gratis! π
Model User tanpa proteksi:
class User extends Model {
// Kosong! Semua field boleh diisi massal
}
Controller rentan:
public function register(Request $request) {
User::create($request->all());
return "Registrasi sukses!";
}
Form normal: name, email, password.
Hacker tambahin di request (pakai Burp Suite atau Postman):
{
"name": "Hacker",
"email": "hack@evil.com",
"password": "123",
"is_admin": true
}
Boom! User baru langsung jadi admin. Bisa hapus data, ubah apa saja!
Visual in-depth ini nunjukin serangan mass assignment di Laravel β hacker ubah role seenaknya!
Contoh 2: Ubah Role di Update Profile
Controller update rentan:
public function update(Request $request, User $user) {
$user->update($request->all());
}
Hacker kirim: "role" => "superadmin" β Akun biasa jadi superadmin.
Contoh 3: Kasus Nyata (GitHub 2012)
Dulu Ruby on Rails kena mass assignment, hacker bisa buat akun admin di GitHub. Untung cepet ditambal!
Cara Mencegah Mass Assignment di Laravel (Wajib!) π‘οΈβ¨
Laravel punya dua cara keren:
- $fillable (Whitelist β Rekomendasi!)
class User extends Model {
protected $fillable = ['name', 'email', 'password']; // Hanya ini boleh diisi massal
}
- $guarded (Blacklist)
class User extends Model {
protected $guarded = ['is_admin', 'role']; // Ini dilarang diisi massal
// Atau $guarded = []; // Larang semua (paling aman, isi manual)
}
Ilustrasi fillable vs guarded ini bikin langsung paham perbedaannya β pakai fillable biar aman!
Visual lain yang jelasin proteksi di Laravel β bookmark ya!
Bonus: Best Practices
- Selalu pakai
$fillableatau$guarded. - Validasi input terpisah (
$request->validate()). - Untuk API, cek field manual kalau perlu.
- Jangan pernah biarin model kosong tanpa proteksi!
Latihan Seru Buat Kamu! πͺπ₯
- Buat project Laravel sederhana dengan registrasi rentan, test jadi admin pakai Postman.
- Tambahin
$fillable, test lagi (harusnya gagal!). - Coba update profile dengan field sensitif.
- Diskusi: Kenapa mass assignment sering terlupakan pemula?
Selamat praktikum, guys! Mass Assignment ini vulnerability "diam" tapi fatal, tapi dengan $fillable atau $guarded, aplikasi Laravel kamu aman kayak benteng π₯ Jadi developer yang aware security dari awal! Ingat: Selalu kontrol apa yang boleh diisi massal! Keep coding safely and have fun! πππ





Top comments (0)