Laravel Shieldv1.2.x
Admin API
Shield datang dengan antarmuka web kecil untuk melihat ban aktif, membaca kejadian, dan melepas ban. Antarmuka ini tidak aktif secara default, dan itu disengaja: halaman ini menampilkan reputasi IP pengguna.
Mengaktifkan
Section titled “Mengaktifkan”SHIELD_ADMIN_ENABLED=trueSampai sini panel sudah bisa dibuka oleh setiap pengguna yang login. Karena itu langkah kedua wajib, bukan opsional.
Batasi akses dengan Gate
Section titled “Batasi akses dengan Gate”SHIELD_ADMIN_AUTHORIZE=manage-shieldNilai tersebut adalah nama ability yang harus dimiliki pengguna. Daftarkan di
app/Providers/AppServiceProvider.php:
use Illuminate\Support\Facades\Gate;
Gate::define('manage-shield', function ($user) { return in_array($user->role, ['admin', 'security'], true);});Untuk debugging, panel /shield/health memberi peringatan kalau kombinasi
enabled: true tanpa authorize sedang aktif.
Prefix URL
Section titled “Prefix URL”Prefix ada di file config, tidak punya variabel environment:
'admin' => [ 'prefix' => 'shield', // jadi /shield/bans],Prefix ini juga dibaca middleware Shield sendiri, sehingga request ke panel tidak ikut dipindai. Kalau Anda diubah, kedua sisi ikut berubah — jangan mengubahnya hanya di satu tempat.
Halaman yang tersedia
Section titled “Halaman yang tersedia”| Method | URL | Isi |
|---|---|---|
GET |
/shield/bans |
Daftar ban aktif beserta durasi tersisa. |
GET |
/shield/bans/{id} |
Detail satu ban dan riwayatnya. |
POST |
/shield/bans/{id}/release |
Melepas ban. |
POST |
/shield/bans/{id}/extend |
Memperpanjang ban. |
GET |
/shield/events |
Daftar kejadian keamanan, bisa disaring. |
GET |
/shield/rules |
Rule aktif beserta skor dan severity. |
GET |
/shield/health |
Status database, cache, proxy, dan DNS. |
Tindakan yang mengubah data (release dan extend) hanya menerima POST
dengan token CSRF, jadi tidak bisa dipicu lewat request GET biasa.
Middleware
Section titled “Middleware”Middleware juga hanya diatur di file config:
'admin' => [ 'middleware' => ['web', 'auth'],],Group web dibutuhkan supaya Blade dan CSRF bekerja. auth memastikan hanya
pengguna login yang bisa masuk.
Kalau aplikasi Anda memakai lebih dari satu guard, sesuaikan di sini:
'middleware' => ['web', 'auth:admin'],Jangan pernah mengosongkan middleware ini kecuali aksesnya dibatasi lewat cara lain, seperti VPN atau IP allowlist.
Melepas ban dari panel
Section titled “Melepas ban dari panel”- Buka
/shield/bans. - Cari IP yang mau dilepas.
- Tekan Release.
Perlu diingat: melepas ban tidak mereset penghitung offense. Penjelasan lengkapnya ada di halaman Ban.
Kalau tidak ingin memakai panel
Section titled “Kalau tidak ingin memakai panel”Semua yang bisa dilakukan panel bisa dilakukan lewat perintah Artisan:
php artisan shield:reportphp artisan shield:healthphp artisan shield:rules:listphp artisan shield:release 203.0.113.10 --reason="cek manual"Perintah-perintah itu tidak memerlukan admin.enabled, jadi Anda bisa
memeriksa kondisi Shield tanpa membuka panel sama sekali.
Checklist sebelum menyalakan
Section titled “Checklist sebelum menyalakan”-
SHIELD_ADMIN_ENABLED=true -
SHIELD_ADMIN_AUTHORIZEdiisi nama ability yang benar - Ability itu benar-benar memeriksa peran, bukan selalu
true - Middleware
authmasih terpasang - Prefix URL tidak menebak-nebak dengan alamat yang mudah ditebak
- Situs berjalan di HTTPS
Panel admin membuat ban bisa dilepas dengan satu klik. Perlakukan sebagai fitur sensitif, bukan sekadar halaman laporan.
Powered by PT Ganadev Multi Solusi