Lewati ke konten

Laravel Shield

Firewall aplikasi untuk Laravel. Dipasang sebagai middleware, langsung bekerja sebelum request sampai ke controller.

Laravel Shield adalah firewall di dalam aplikasi Laravel Anda. Begitu sebuah request masuk, Shield menilainya sebelum controller sempat berjalan, lalu membuat salah satu keputusan:

Keputusan Arti
Izinkan Request normal, lanjut ke aplikasi.
Amati Mencurigakan, tapi dicatat dulu tanpa mengganggu pengguna.
Challenge Minta pengunjung membuktikan manusia dulu (Turnstile/reCAPTCHA).
Blokir Request berbahaya, ditolak.
Ban IP pelaku diblokir sementara, dengan eskalasi bila mengulangi.

Bedanya dengan WAF di depan server: Shield punya memori. Ia tahu bahwa satu IP sudah mencoba 300 URL berbeda dalam 60 detik, atau sudah tiga kali mencoba login gagal. WAF biasa hanya melihat request yang sedang lewat.

Kebutuhan Keterangan
PHP ^8.2 Minimal.
Laravel 11, 12, atau 13 Diuji pada Laravel 12 dan 13.
Database Untuk menyimpan ban dan catatan kejadian. MySQL, MariaDB, PostgreSQL, atau SQLite.
Akun Cloudflare atau Google Hanya kalau Anda memakai challenge.
Terminal window
composer require ganadev/laravel-shield:^1.2.2
php artisan vendor:publish --provider="Ganadev\Shield\Laravel\ShieldServiceProvider" --tag=shield-config
php artisan vendor:publish --provider="Ganadev\Shield\Laravel\ShieldServiceProvider" --tag=shield-migrations
php artisan migrate

Itu dia — dalam mode bawaan, Shield hanya mencatat dan belum memblokir apa pun. Aman untuk dipasang di aplikasi yang sedang berjalan.

Langkah lengkapnya ada di Instalasi.

File sensitif. Permintaan seperti /.env, /.git/config, /.aws/credentials, wp-config.php, file backup .php.bak, sampai file .php yang muncul di dalam folder upload langsung ditolak.

Path traversal. Bukan hanya ../, tapi juga versi yang di-encode: %2e%2e, dan yang di-encode dua kali %252e%252e%252f. Targetnya /etc/passwd dan /proc/self/environ.

Serangan SQLi, XSS, dan command injection. Biasanya WAF hanya melihat URL. Shield juga membaca body request — termasuk application/json — lalu mencari union select, <script, php://input, eval(, dan sebagainya.

Penelahan (enumeration). Bot yang mencoba ratusan URL berbeda dalam 60 detik, atau yang membanjiri /login dengan ratusan percobaan.

Bot palsu. Site mana pun bisa mengirim User-Agent: Googlebot. Shield tidak percaya; ia hanya meloloskan crawler yang IP-nya benar-benar terverifikasi, agar Googlebot asli tetap bisa mengindeks situs Anda.

  1. Mulai dari mode observe. Biarkan Shield mencatat 1–3 hari, lalu baca shield:report untuk memastikan tidak ada yang salah sasaran.
  2. Atur trusted proxy kalau ada. Kalau aplikasi di belakang Cloudflare atau load balancer tanpa pengaturan ini, semua pengguna terlihat berasal dari satu IP — dan Anda akan memblokir orang banyak sekaligus.
  3. Jalankan scheduler Laravel. php artisan schedule:run setiap menit, supaya pembersihan otomatis tetap berjalan.

Ketiganya dijelaskan di Instalasi.

Instalasi

Panduan langkah demi langkah, dari composer require sampai middleware terdaftar.

Masalah Umum

Gejala, penyebab, dan perbaikannya.

Konfigurasi

Semua kunci konfigurasi, lengkap dengan nilai default-nya.

Powered by PT Ganadev Multi Solusi