Instalasi
Persyaratan: PHP ^8.2, Composer, Laravel 11/12/13 (diuji pada Laravel 12 & 13).
1. Pasang package
Section titled “1. Pasang package”composer require ganadev/laravel-shield ganadev/shield-corelaravel-shield otomatis menarik ganadev/shield-core. Provider terdaftar otomatis (auto-discovery).
2. Publish aset
Section titled “2. Publish aset”php artisan vendor:publish --provider="Ganadev\Shield\Laravel\ShieldServiceProvider" --tag=shield-configphp artisan vendor:publish --provider="Ganadev\Shield\Laravel\ShieldServiceProvider" --tag=shield-migrationsphp artisan vendor:publish --provider="Ganadev\Shield\Laravel\ShieldServiceProvider" --tag=shield-views # opsionalphp artisan migrateshield-config→config/shield.phpshield-migrations→ tabelsecurity_ip_bans&security_eventsshield-views→ halaman brandedresources/views/vendor/shield/{blocked,challenge}.blade.php
3. Daftarkan middleware
Section titled “3. Daftarkan middleware”Pasang sebagai middleware global (bukan group web) supaya request ke path tanpa route (mis. /.env)
ikut diperiksa. Letakkan setelah resolusi trusted proxy:
->withMiddleware(function (Middleware $middleware): void { $middleware->append([ \Ganadev\Shield\Laravel\Middleware\SecurityFirewallMiddleware::class, ]);})4. Atur environment
Section titled “4. Atur environment”SHIELD_MODE=observe # mulai aman: catat dulu tanpa memblokirSHIELD_APP_ID=my-appSHIELD_CHALLENGE=turnstile # turnstile | recaptcha | null5. Trusted proxy & IP (penting di produksi)
Section titled “5. Trusted proxy & IP (penting di produksi)”Semua ban, challenge, dan penghitung berbasis IP klien. Jika di belakang load balancer / reverse proxy,
atur trusted proxies agar $request->ip() mengembalikan IP asli. Tanpa itu, semua pengguna terlihat satu IP
→ ban/challenge massal.
->withMiddleware(function (Middleware $middleware) { $middleware->trustProxies( at: '192.168.0.1,192.168.0.2', headers: Request::HEADER_X_FORWARDED_FOR, );})php artisan shield:health memberi peringatan jika header forwarded terdeteksi tanpa trusted proxies.
6. Jalankan
Section titled “6. Jalankan”php artisan serveGunakan php artisan shield:report untuk ringkasan event dan shield:health untuk cek komponen.
Rollout bertahap (disarankan)
Section titled “Rollout bertahap (disarankan)”- Mode
observe24–72 jam → pantaushield:report. - Aktifkan
enforceuntuk aturan critical dulu. - Aktifkan behavior challenge dengan threshold hati-hati.
- Aktifkan eskalasi ban setelah observasi.
- Pantau manual release & challenge pass rate sebagai tanda false-positive.
Powered by PT Ganadev Multi Solusi