jeffersongoncalves/filament-scanner-guard
Protect your Filament admin panel from automated vulnerability scanners. Scanner Guard detects suspicious scan attempts, logs malicious traffic, and blocks it before it reaches sensitive routes, with simple configuration and a native Filament settings page for managing rules.
Architecture fit
filament-scanner-guard is a Filament panel plugin for detecting and banning vulnerability-scanner/bot traffic, with an admin UI and a bans-per-day chart. It fits Laravel applications that already run a Filament admin panel and want in-app visibility and manual/automatic ban controls. It is a poor fit for API-only services, non-Filament backends, or teams expecting an edge/WAF-grade control — this is application-level detection, not a replacement for Cloudflare/AWS WAF/nginx limits.
Architecturally it introduces three concerns into the request path: a middleware-style request inspection layer, persistent ban state (DB tables), and admin-panel UI/widgets for reporting. That is a reasonable fit for a monolith or a small platform team; it is a weaker fit for distributed services where each node needs consistent ban state and low-latency lookups.
Integration feasibility
Standard Composer install, config/migration publishing, and plugin registration in the PanelProvider. Integration effort is low-to-moderate — likely under a day for a developer familiar with Filament, plus staging observation time. The main unknowns are runtime version constraints (see risk), migration behaviour on existing ban tables, and how the package resolves client IPs behind proxies/CDNs.
Technical risk
^11.0 is dev-only. It widens the test harness but does not by itself demonstrate runtime support for a newer Laravel/Filament line. Verify composer.json runtime constraints before planning an upgrade.Key questions
illuminate/*, filament/*, PHP) are declared? Is Laravel 12 / Filament v4 actually supported, or only tested in dev?TrustProxies, X-Forwarded-For, Cloudflare headers? Misresolution can ban a CDN or load-balancer IP and take the site down.Stack fit Best fit: Laravel 10/11/12 monolith or modular monolith with Filament v3/v4 admin, PHP 8.2+, behind a known reverse proxy/CDN. Weak fit: headless/API-only, multi-region active-active, or teams without a Filament admin surface.
Migration path
1.2.0) and review the diff between 1.1.0 and 1.2.0, specifically the chart-history change and any migration files.composer require, publish config and migrations, run migrations against a copy of production-sized ban data.Compatibility
Treat the orchestra/testbench ^10.0 || ^11.0 change as a testing-matrix widening only. Confirm declared runtime support in composer.json and test against the exact Laravel/Filament versions in use. Filament major-version compatibility is the most likely breakage point on future upgrades.
Sequencing (a) Version pin and diff review → (b) staging migration and detection-only run → (c) proxy/IP-resolution validation → (d) allowlist and runbook → (e) enable auto-ban → (f) define a retention policy for the now-persistent history → (g) monitor table growth and query latency for one release cycle before considering upgrades beyond 1.2.x.
Maintenance Low code footprint but a single-maintainer dependency with dependabot-driven releases. Budget for periodic review of each bump; assume you may need to fork or vendor-patch. Pin versions and avoid floating constraints.
Support Community OSS, no SLA. Name an internal owner (platform/backend lead) and document escalation as "fork and patch." Support desk needs a documented unban procedure and a clear "who to call" when a legitimate user or admin is banned.
Scaling Per-request inspection plus a ban lookup is the primary cost. On high-traffic sites, ensure the IP lookup is indexed and cached (Redis) and that the middleware short-circuits cheaply. The 1.2.0 history-retention fix increases stored data — plan indexes and a purge/archive job for historical chart data, and monitor bans-table growth.
Failure modes
Ramp-up Developer integration: ~0.5–1 day for a Filament-fluent engineer. Operations/SRE: ~1 day to document proxy behaviour, allowlist management, retention policy, and the unban runbook. Security/privacy review: 0.5 day to confirm what is logged and for how long, given the retention change in 1.2.0. Total realistic time-to-safe-production: 2–3 weeks including the detection-only observation window.
How can I help you explore Laravel packages today?