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. Extract the IP (Laravel safely handles reverse proxies automatically) $ip = $request->ip(); // Skip local development IPs if (!in_array($ip, ['127.0.0.1', '::1'])) { try { // 2. Query ProxyTracer API with a strict 500ms timeout $response = Http::withToken(env('PROXYTRACER_API_KEY')) ->timeout(0.5) ->get("https://api.proxytracer.com/v1/check/{$ip}"); if ($response->successful()) { // 3. Drop the connection if a proxy is detected if ($response->json('proxy') === true) { return response()->json([ 'error' => 'Access Denied: VPN or Proxy detected.' ], 403); } } } catch (\Exception $e) { // Fail open: Log the error and allow the request to ensure uptime Log::warning("ProxyTracer validation failed: " . $e->getMessage()); } } // 4. Traffic is clean, proceed to the controller 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.
Last updated on