make-dev/laravel-security
Drop-in security headers for Laravel 11–13: HSTS, CSP with per-request nonces and strict-dynamic, X-Content-Type-Options, Permissions-Policy, and Subresource Integrity. Includes CSP/SRI violation report endpoints, logging/db storage, and Vapor-friendly SRI manifests.
web, global) aligns with Laravel’s request lifecycle.php artisan security:install), and published config templates reduce manual configuration overhead.CSP_REPORT_ONLY) and sensible defaults (e.g., strict-dynamic CSP) minimize disruption during migration.<script> tags, though Vite integration requires explicit useCspNonce() binding.strict-dynamic + nonces) requires careful testing, especially for third-party integrations (e.g., GTM, Stripe). Misconfiguration can break functionality.sri:build-manifest) or warm-up processes (sri:warm) add operational complexity, particularly in CI/CD pipelines.exclude_paths.CSP_NONCE_AUTO_INJECT may inadvertently nonce user-generated content (e.g., {!! $comment !!}), requiring explicit opt-outs.sri:build-manifest and sri:warm be integrated into the deploy pipeline? Will it block deploys if manifest generation fails?data-sri-managed tags) mitigated?CSP_REPORT_ONLY fallback)?bootstrap/cache/ manifest storage and warm-up flows for post-deploy CSS processing.useCspNonce()), Laravel Mix, and raw asset paths. SRI manifest generation supports both static (public/build/) and dynamic (/livewire/) assets.csp_reports/sri_reports tables (requires migrations).exclude_paths.composer require make-dev/laravel-security.php artisan security:install to generate config/security.php with wizard-guided presets.php artisan vendor:publish --tag=make-dev-laravel-security.CSP_ASSET_DOMAIN for CDN/asset hosts.SRI_SCAN_DIRS to match asset build output (e.g., ['public/build']).Vite::useCspNonce(app(\MakeDev\Security\Services\CspNonce::class)->value()).php artisan sri:build-manifest.php artisan sri:warm post-deploy.curl -I.php artisan sri:validate-manifest.{!! !!}.asset_domain config. Requires explicit allowlisting for SRI.@cspNonce in Blade). Wizard presets automate this for common integrations.report-only mode (CSP_REPORT_ONLY=true).CSP_REPORT_ONLY=false).max-age (e.g., 300s) for testing, then increase.Permissions-Policy incrementally (e.g., deny geolocation first).config/security.php reduces drift but requires version control for customizations.csp_reports table or log channel to identify blocked resources.sri_reports for hash mismatches or observer errors.@cspNonce on third-party tags or auto-injected nonces in user-generated content.scan_dirs or skipped patterns (e.g., Livewire JS).exclude_paths for non-critical routes.throttle:) to prevent abuse.How can I help you explore Laravel packages today?