artisanpack-ui/security
Core Laravel security toolkit for ArtisanPack UI: sanitization, escaping (Laminas Escaper), KSES filtering, validation rules, security/CSP middleware, CSP builder with nonce & reporting, rate limiting, audit/scan commands, and testing helpers.
Pre-launch security checklist for applications using the ArtisanPack Security package.
Review each item before deploying to production. Items are categorized by priority:
Strong password policy enabled
'complexity' => [
'minLength' => 8,
'requireUppercase' => true,
'requireNumbers' => true,
'requireSymbols' => true,
],
Breached password checking enabled
'breachChecking' => ['enabled' => true],
Account lockout configured
'lockout' => [
'enabled' => true,
'threshold' => 5,
'duration_minutes' => 30,
],
Secure password hashing (bcrypt or Argon2id)
Login throttling enabled
Two-factor authentication available for users
2FA required for admin accounts
'enforcement' => [
'mode' => 'role_based',
'required_roles' => ['admin', 'super-admin'],
],
Recovery codes generated for 2FA users
Device fingerprinting enabled for suspicious login detection
Secure session driver (database or Redis, not file)
SESSION_DRIVER=database
Session encryption enabled
SESSION_ENCRYPT=true
Secure cookie settings
SESSION_SECURE_COOKIE=true
SESSION_HTTP_ONLY=true
SESSION_SAME_SITE=lax
Reasonable session lifetime set
Session binding enabled
'binding' => [
'enabled' => true,
'ip_address' => ['enabled' => true],
'user_agent' => ['enabled' => true],
],
Concurrent session limits configured
Session rotation enabled
'rotation' => [
'enabled' => true,
'interval_minutes' => 15,
],
Idle timeout configured
Token expiration set
'tokens' => ['expiration_days' => 365],
Rate limiting enabled
'rate_limiting' => [
'enabled' => true,
'default_limit' => 60,
],
Token abilities properly defined and enforced
HTTPS required for all API endpoints
RBAC caching enabled for performance
'rbac' => ['cache' => true],
Middleware applied to protected routes
Blade directives used for UI elements
CSP enabled
'csp' => ['enabled' => true],
Report-only mode disabled in production
'report_only' => false,
Restrictive default-src
'default-src' => ["'self'"],
Object-src set to none
'object-src' => ["'none'"],
Nonces used for inline scripts
<script nonce="{{ cspNonce() }}">
External sources explicitly listed
frame-ancestors configured to prevent clickjacking
Security headers enabled
HSTS enabled (for HTTPS sites)
'Strict-Transport-Security' => 'max-age=31536000; includeSubDomains',
X-Frame-Options set
'X-Frame-Options' => 'SAMEORIGIN',
X-Content-Type-Options set
'X-Content-Type-Options' => 'nosniff',
php artisan security:test-headers
File type validation enabled
'validateMimeByContent' => true,
Dangerous extensions blocked
'blockedExtensions' => ['php', 'exe', 'sh', ...],
File size limits configured
Files stored outside web root
'storage' => ['disk' => 'local'], // Not 'public'
All user input validated
SQL injection prevention (use Eloquent/Query Builder)
XSS prevention (escape output)
{{ $userInput }} {{-- Escaped --}}
CSRF protection enabled
Input sanitization helpers used
$email = sanitizeEmail($input);
$text = sanitizeText($input);
HTML filtering for rich text
{!! kses($html) !!}
Audit logging enabled
'audit_logging' => ['enabled' => true],
Security event logging enabled
Data retention policies configured
GDPR features enabled (if applicable)
'gdpr' => ['enabled' => true],
Consent management implemented (if needed)
Security alerts configured
'alerts' => [
'enabled' => true,
'channels' => ['mail', 'slack'],
],
Threat detection enabled
Failed login monitoring
DEBUG mode disabled in production
APP_DEBUG=false
APP_ENV set to production
APP_ENV=production
Strong APP_KEY generated
HTTPS enforced
FORCE_HTTPS=true
Sensitive env vars not in version control
php artisan config:cache
Dependency vulnerabilities scanned
php artisan security:scan-dependencies
Regular security updates applied
Server hardening completed
Run these commands before going live:
# Check security configuration
php artisan security:check-config --env=production
# Verify session security
php artisan security:check-session
# Test CSP configuration
php artisan security:csp:test
# Check API security settings
php artisan api:security:check
All commands should pass without critical issues.
How can I help you explore Laravel packages today?