diff --git a/app/Http/Middleware/SecurityHeaders.php b/app/Http/Middleware/SecurityHeaders.php new file mode 100644 index 0000000..cf3fe0c --- /dev/null +++ b/app/Http/Middleware/SecurityHeaders.php @@ -0,0 +1,27 @@ +headers->set('Strict-Transport-Security', 'max-age=31536000; includeSubDomains', true); + $response->headers->set('X-Content-Type-Options', 'nosniff', true); + $response->headers->set('X-Frame-Options', 'SAMEORIGIN', true); + $response->headers->set('X-XSS-Protection', '1; mode=block', true); + $response->headers->set('Referrer-Policy', 'strict-origin-when-cross-origin', true); + + return $response; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..e39d9ab 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,6 +3,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; +use Illuminate\Support\Facades\URL; class AppServiceProvider extends ServiceProvider { @@ -19,6 +20,9 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { - // + // Forcer HTTPS en production et staging + if (!app()->environment('local')) { + URL::forceScheme('https'); + } } } diff --git a/bootstrap/app.php b/bootstrap/app.php index c183276..47c5884 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -3,6 +3,7 @@ use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; +use App\Http\Middleware\SecurityHeaders; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( @@ -11,7 +12,7 @@ return Application::configure(basePath: dirname(__DIR__)) health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { - // + $middleware->append(SecurityHeaders::class); }) ->withExceptions(function (Exceptions $exceptions): void { //