Skip to Content

Laravel (PHP)

L'intégration de ProxyTracer dans une application Laravel est incroyablement simple. En créant un intergiciel HTTP standard, vous pouvez protéger l'ensemble de votre application de manière globale ou l'appliquer sélectivement à des routes sensibles (comme /login ou /checkout).

L'Intergiciel

La méthode native $request->ip() de Laravel gère automatiquement l'extraction de l'équilibreur de charge (en supposant que votre intergiciel TrustProxies est correctement configuré). Nous utilisons la façade native Http pour interroger l'API et bloquer la requête si elle est signalée.

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Symfony\Component\HttpFoundation\Response; class ProxyTracerMiddleware { /** * Handle an incoming request. */ public function handle(Request $request, Closure $next): Response { // 1. Extraire l'IP (Laravel gère automatiquement les proxys inverses en toute sécurité) $ip = $request->ip(); // Ignorer les IP de développement local if (!in_array($ip, ['127.0.0.1', '::1'])) { try { // 2. Interroger l'API ProxyTracer avec un timeout strict de 500 ms $response = Http::withToken(env('PROXYTRACER_API_KEY')) ->timeout(0.5) ->get("https://api.proxytracer.com/v1/check/{$ip}"); if ($response->successful()) { // 3. Interrompre la connexion si un proxy est détecté if ($response->json('proxy') === true) { return response()->json([ 'error' => 'Access Denied: VPN or Proxy detected.' ], 403); } } } catch (\Exception $e) { // Fail open : journaliser l'erreur et autoriser la requête pour garantir la disponibilité Log::warning("ProxyTracer validation failed: " . $e->getMessage()); } } // 4. Le trafic est sain, poursuivre vers le contrôleur return $next($request); } }

Configuration :

Générez l'intergiciel en utilisant php artisan make:middleware ProxyTracerMiddleware.

Pour l'appliquer globalement, ajoutez-le à votre pile d'intergiciels.

  • Laravel 11: Ajoutez-le dans votre fichier bootstrap/app.php sous $middleware->append().
  • Laravel 10 et inférieur: Ajoutez-le au tableau $middleware dans votre fichier app/Http/Kernel.php.
Dernière mise à jour le