Lewati ke konten

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.

SHIELD_ADMIN_ENABLED=true

Sampai sini panel sudah bisa dibuka oleh setiap pengguna yang login. Karena itu langkah kedua wajib, bukan opsional.

SHIELD_ADMIN_AUTHORIZE=manage-shield

Nilai 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 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.

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 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.

  1. Buka /shield/bans.
  2. Cari IP yang mau dilepas.
  3. Tekan Release.

Perlu diingat: melepas ban tidak mereset penghitung offense. Penjelasan lengkapnya ada di halaman Ban.

Semua yang bisa dilakukan panel bisa dilakukan lewat perintah Artisan:

Terminal window
php artisan shield:report
php artisan shield:health
php artisan shield:rules:list
php 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.

  • SHIELD_ADMIN_ENABLED=true
  • SHIELD_ADMIN_AUTHORIZE diisi nama ability yang benar
  • Ability itu benar-benar memeriksa peran, bukan selalu true
  • Middleware auth masih 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