jorijn/laravel-security-checker
Laravel Security Checker scans your Composer dependencies for known vulnerabilities using the FriendsOfPHP security advisories database. Run it via an Artisan command or schedule it, and get notified through email, Slack, Telegram, or Discord when security issues affect your app.
laravel-security-checker wraps the Symfony/local PHP security advisories database in an artisan command, so it's a near-zero-cost build decision. Adopt it rather than building custom advisory ingestion or paying for a heavyweight SCA platform at early stage.allow_list / LCS_ALLOW_LIST lets you explicitly suppress specific CVEs or exact advisory titles as a tracked configuration artifact. This turns "we know about that one and chose to ship anyway" from tribal knowledge into a reviewable line in .env/deploy config — a decision record PMs and security reviewers can audit per release.exclude_dev / LCS_EXCLUDE_DEV removes dev-only dependencies from the check, so the gate reflects actual shipped surface area rather than test tooling noise. Fewer spurious failures means engineers stop treating the check as ignorable — critical for gate adoption.Consider adoption when:
allow_list fits teams that want accepted risks versioned next to the code rather than clicked away in a SaaS UI.exclude_dev.Look elsewhere when:
.env isn't a governed, auditable artifact, the allow list is only as trustworthy as your config management.For executives: This is a small, free addition to our existing Laravel pipeline that automatically checks our production dependencies against the public vulnerability database every time we build. It gives us a hard stop on shipping known-vulnerable code, and — importantly for audits and enterprise deals — a written record of any vulnerability we consciously accepted and why. Effort is roughly a day of setup; the alternative is a paid scanning platform with per-seat licensing and a separate dashboard nobody logs into.
For engineering: Add the package, wire php artisan security-check into CI as a blocking step, and treat the dependency advisory list as part of the build contract. The v3.1.0 additions make this practical: set LCS_EXCLUDE_DEV=true so test and static-analysis tooling doesn't create false failures, and use LCS_ALLOW_LIST with exact CVE IDs or advisory titles when we knowingly accept a risk — single-quoted JSON array in .env, invalid values are logged and ignored so the check never silently dies. Two caveats: the allow list has no expiry, so we should review it each release cycle and remove entries once patched; and this reports advisories, it doesn't remediate them — upgrade work still lands on us. No breaking changes in this release; it's additive over v3.0.0.
How can I help you explore Laravel packages today?