laramint/laravel-security-scanner
Pros:
DB::raw, whereRaw, Auth::loginUsingId), reducing false positives/negatives compared to generic PHP scanners.php-security-scanner, inheriting its core taint-tracking engine while adding Laravel-aware rules.request()->input(), Cookie::get()), improving accuracy for injection risks.Cons:
php-security-scanner’s maturity (e.g., taint propagation logic, rule engine).--dev dependency) with zero runtime impact.composer/installed.json; manual CLI flag (--extension=LaraMint\LaravelSecurityScanner\LaravelExtension) only needed for explicit control.vendor/bin/php-security-scanner scan --extensions=LaraMint\LaravelSecurityScanner\LaravelExtension).Route::bind(), Model::resolveRouteBinding()) may cause false negatives for taint propagation.php-security-scanner baseline; optimize via parallel processing or incremental scans.Process in Laravel 10+) may require rule updates.roave/security-advisories, paragonie/scan).critical for SQLi vs. medium for dd() leaks) map to team workflows (e.g., blocker vs. minor)?DB::raw usages)?laravel-pint + runtime tests) is needed?Http\Client)?psalm, phpstan) or ticketing systems (e.g., Jira)?phpstan, psalm, or pint (though overlaps with some rules).laravel-debugbar or sentry for validation.git-secrets or trufflehog for env/credential leaks.php-security-scanner rules still apply.composer require --dev laramint/laravel-security-scanner.DB::raw in legacy queries).composer.json scripts:
"scripts": {
"security:scan": "vendor/bin/php-security-scanner scan --extensions=LaraMint\\LaravelSecurityScanner\\LaravelExtension --severity=high,critical"
}
push to main or PR merges.--severity=critical to avoid alert fatigue.high/medium after stabilizing false positives.php-security-scanner’s legacy mode.php-security-scanner.eslint-like plugins).composer install and composer dump-autoload to ensure installed.json is up-to-date.app/Http, app/Models) or use glob patterns:
vendor/bin/php-security-scanner scan --extensions=LaraMint\\LaravelSecurityScanner\\LaravelExtension --path=app/Http --severity=high,critical
--format=json --output=scan-results.json.critical/high issues; document allowlisted exceptions.Process are added).laravel-security-scanner and php-security-scanner versions in composer.json to avoid breaking changes.config/security-scanner.allowlist.php) for known-safe patterns:
return [
'laravel.sql-injection' => [
'app/Models/User.php:42', // Safe raw query
],
];
dd() in tests vs. production).Auth::loginUsingId($id) is critical).SECURITY.md file with scanner setup instructions and example outputs.--parallel flag or split scans by module.git diff).How can I help you explore Laravel packages today?