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.phpsous$middleware->append(). -
Laravel 10 et inférieur: Ajoutez-le au tableau
$middlewaredans votre fichierapp/Http/Kernel.php.
Dernière mise à jour le