grazulex / laravel-safeguard
Configurable security checks for Laravel applications. Run safety audits on environment variables, configuration files, and hidden routes to prevent common mistakes before going live.
Fund package maintenance!
Grazulex
Buy Me A Coffee
paypal.me/strauven
Requires
- php: ^8.3
- illuminate/contracts: ^12.0
- illuminate/support: ^12.19
- nesbot/carbon: ^3.10
- symfony/yaml: ^7.3
Requires (Dev)
- doctrine/dbal: ^4.2
- larastan/larastan: ^3.4
- laravel/pint: ^1.22
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.8
- pestphp/pest-plugin-laravel: ^3.2
- rector/rector: ^2.0
README
Comprehensive security auditing and threat detection system for Laravel applications. Real-time monitoring, automated security assessments, and detailed security reporting.
๐ Table of Contents
- Overview
- โจ Features
- ๐ฆ Installation
- ๐ Quick Start
- ๐ Security Auditing
- ๐จ Threat Detection
- ๐ Security Dashboard
- โ๏ธ Configuration
- ๐ Documentation
- ๐ก Examples
- ๐งช Testing
- ๐ง Requirements
- ๐ Performance
- ๐ค Contributing
- ๐ Security
- ๐ License
Overview
Laravel Safeguard is a comprehensive security auditing and threat detection system for Laravel applications. It provides real-time monitoring, automated security assessments, and detailed reporting to keep your application secure.
Perfect for enterprise applications, security-conscious projects, and applications requiring compliance with security standards.
๐ฏ Use Cases
Laravel Safeguard is perfect for:
- Enterprise Applications - Comprehensive security monitoring
- Financial Systems - Fraud detection and prevention
- Healthcare Apps - HIPAA compliance and data protection
- E-commerce - Transaction security and user protection
- API Security - Rate limiting and abuse detection
โจ Features
- ๐ Real-time Monitoring - Live security event tracking and alerting
- ๐ Vulnerability Scanning - Automated security vulnerability detection
- ๐ก๏ธ Intrusion Detection - Advanced threat detection algorithms
- ๐ Security Dashboard - Comprehensive security metrics and reporting
- ๐จ Alert System - Configurable alerts for security events
- ๐ Access Control - Role-based access control monitoring
- ๐ Audit Logging - Detailed security event logging
- ๐ฏ Rate Limiting - Advanced rate limiting with threat intelligence
- โ Compliance Reporting - Generate compliance reports
- ๐ Security Analytics - Deep security insights and trends
- ๐งช Penetration Testing - Built-in security testing tools
- โก Performance Optimized - Minimal impact on application performance
๐ฆ Installation
Install the package via Composer:
composer require grazulex/laravel-safeguard
๐ก Auto-Discovery
The service provider will be automatically registered thanks to Laravel's package auto-discovery.
Publish configuration:
php artisan vendor:publish --tag=safeguard-config
๐ Quick Start
1. Initialize Safeguard
php artisan safeguard:install
2. Configure Security Rules
// config/safeguard.php return [ 'threat_detection' => [ 'enabled' => true, 'sql_injection' => true, 'xss_protection' => true, 'brute_force' => true, ], 'rate_limiting' => [ 'enabled' => true, 'requests_per_minute' => 60, 'burst_limit' => 100, ], 'audit_logging' => [ 'enabled' => true, 'log_failed_logins' => true, 'log_data_access' => true, ], ];
3. Add Middleware Protection
// app/Http/Kernel.php protected $middleware = [ \Grazulex\LaravelSafeguard\Middleware\SecurityMonitor::class, \Grazulex\LaravelSafeguard\Middleware\ThreatDetection::class, ]; protected $middlewareGroups = [ 'web' => [ \Grazulex\LaravelSafeguard\Middleware\RateLimiter::class, ], 'api' => [ \Grazulex\LaravelSafeguard\Middleware\ApiProtection::class, ], ];
4. Monitor Security Events
use Grazulex\LaravelSafeguard\Facades\Safeguard; // Get security dashboard data $dashboard = Safeguard::dashboard(); // Check recent threats $threats = Safeguard::getThreats(['last_24_hours' => true]); // Generate security report $report = Safeguard::generateReport('monthly'); // Get audit logs $auditLogs = Safeguard::auditLogs() ->where('event_type', 'login_attempt') ->where('created_at', '>=', now()->subDays(7)) ->get();
๐ Security Auditing
Laravel Safeguard provides comprehensive security auditing:
// Enable automatic auditing Safeguard::audit(User::class)->track([ 'created', 'updated', 'deleted', 'login', 'logout', 'password_change' ]); // Manual audit logging Safeguard::log('user_data_access', [ 'user_id' => auth()->id(), 'accessed_resource' => 'sensitive_data', 'ip_address' => request()->ip(), ]); // Security scanning $vulnerabilities = Safeguard::scan([ 'sql_injection' => true, 'xss_vulnerabilities' => true, 'csrf_protection' => true, 'security_headers' => true, ]);
๐จ Threat Detection
Advanced threat detection capabilities:
use Grazulex\LaravelSafeguard\ThreatDetection\Detectors; // Configure threat detectors Safeguard::threats()->register([ Detectors\SqlInjectionDetector::class, Detectors\XssDetector::class, Detectors\BruteForceDetector::class, Detectors\SuspiciousActivityDetector::class, ]); // Real-time threat monitoring Safeguard::threats()->monitor(function ($threat) { // Log threat Log::warning('Security threat detected', [ 'type' => $threat->getType(), 'severity' => $threat->getSeverity(), 'details' => $threat->getDetails(), ]); // Send alert if ($threat->getSeverity() === 'high') { Mail::to('security@company.com')->send( new SecurityAlert($threat) ); } });
๐ Security Dashboard
Built-in security dashboard with comprehensive metrics:
// Access dashboard data $dashboard = Safeguard::dashboard()->getData(); // Dashboard metrics include: // - Threat detection statistics // - Failed login attempts // - Rate limiting statistics // - Vulnerability scan results // - Audit log summaries // - Security score and trends // Custom dashboard widgets Safeguard::dashboard()->addWidget('custom_security_metric', function () { return [ 'title' => 'Custom Security Metric', 'value' => $this->calculateCustomMetric(), 'trend' => 'up', 'color' => 'green', ]; });
โ๏ธ Configuration
Laravel Safeguard provides extensive configuration options:
// config/safeguard.php return [ 'monitoring' => [ 'enabled' => true, 'real_time_alerts' => true, 'threat_intelligence' => true, ], 'detection_rules' => [ 'sql_injection' => ['enabled' => true, 'sensitivity' => 'high'], 'xss_protection' => ['enabled' => true, 'sanitize' => true], 'brute_force' => ['enabled' => true, 'max_attempts' => 5], ], 'compliance' => [ 'gdpr' => true, 'hipaa' => false, 'pci_dss' => true, ], ];
๐ Documentation
For detailed documentation, examples, and advanced usage:
- ๐ Full Documentation
- ๐ฏ Examples
- ๐ง Configuration
- ๐งช Testing
- ๐จ Threat Detection
๐ก Examples
Basic Security Monitoring
use Grazulex\LaravelSafeguard\Facades\Safeguard; // Enable monitoring for specific models class User extends Model { use \Grazulex\LaravelSafeguard\Traits\Auditable; protected $auditableEvents = ['created', 'updated', 'login']; } // Monitor API endpoints Route::middleware(['safeguard.monitor'])->group(function () { Route::get('/api/sensitive-data', [ApiController::class, 'getData']); }); // Custom threat detection Safeguard::threats()->detect('custom_threat', function ($request) { return $request->has('suspicious_parameter'); });
Advanced Security Configuration
// Custom security rules Safeguard::rules()->add('financial_transaction', [ 'min_amount' => 0.01, 'max_amount' => 10000, 'require_2fa' => true, 'suspicious_patterns' => [ 'rapid_succession' => true, 'unusual_amounts' => true, ], ]); // Security event handling Safeguard::events()->listen('threat_detected', function ($threat) { // Automatically block suspicious IPs if ($threat->getSeverity() === 'critical') { Safeguard::firewall()->block($threat->getIpAddress()); } });
Check out the examples on the wiki for more examples.
๐งช Testing
Laravel Safeguard includes security testing utilities:
use Grazulex\LaravelSafeguard\Testing\SecurityTester; public function test_sql_injection_protection() { SecurityTester::make() ->attemptSqlInjection('/api/users?id=1; DROP TABLE users;--') ->assertBlocked() ->assertThreatLogged('sql_injection'); } public function test_rate_limiting() { SecurityTester::make() ->simulateRequests('/api/endpoint', 100) ->assertRateLimited() ->assertAuditLogged(); }
๐ง Requirements
- PHP: ^8.3
- Laravel: ^12.0
- Carbon: ^3.10
๐ Performance
Laravel Safeguard is optimized for performance:
- Minimal Overhead: Less than 2ms additional request time
- Efficient Monitoring: Asynchronous threat detection
- Caching: Security rules and patterns are cached
- Database Optimized: Efficient audit log storage
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
๐ Security
If you discover a security vulnerability, please review our Security Policy before disclosing it.
๐ License
Laravel Safeguard is open-sourced software licensed under the MIT license.
Made with โค๏ธ for the Laravel community
Resources
Community Links
- CODE_OF_CONDUCT.md - Our code of conduct
- CONTRIBUTING.md - How to contribute
- SECURITY.md - Security policy
- RELEASES.md - Release notes and changelog