Skip to Content

Laravel (PHP)

Integrar o ProxyTracer em uma aplicação Laravel é incrivelmente simples. Ao criar um HTTP Middleware padrão, você pode proteger toda a sua aplicação globalmente ou aplicá-lo seletivamente a rotas sensíveis (como /login ou /checkout).

O Middleware

O método nativo $request->ip() do Laravel lida automaticamente com a extração de IPs atrás de balanceadores de carga (desde que seu middleware TrustProxies esteja configurado corretamente). Utilizamos a facade nativa Http para consultar a API e descartar a requisição caso seja sinalizada.

<?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. Extraia o IP (o Laravel lida automaticamente com proxies reversos com segurança) $ip = $request->ip(); // Ignorar IPs de desenvolvimento local if (!in_array($ip, ['127.0.0.1', '::1'])) { try { // 2. Consulte a API do ProxyTracer com um timeout rigoroso de 500ms $response = Http::withToken(env('PROXYTRACER_API_KEY')) ->timeout(0.5) ->get("https://api.proxytracer.com/v1/check/{$ip}"); if ($response->successful()) { // 3. Encerre a conexão se um proxy for detectado if ($response->json('proxy') === true) { return response()->json([ 'error' => 'Access Denied: VPN or Proxy detected.' ], 403); } } } catch (\Exception $e) { // Fail-open: Registre o erro e permita a requisição para garantir a disponibilidade Log::warning("ProxyTracer validation failed: " . $e->getMessage()); } } // 4. O tráfego é legítimo, prossiga para o controller return $next($request); } }

Configuração:

Gere o middleware usando php artisan make:middleware ProxyTracerMiddleware.

Para aplicá-lo globalmente, adicione-o à sua pilha de middlewares.

  • Laravel 11: Adicione-o dentro do seu arquivo bootstrap/app.php em $middleware->append().
  • Laravel 10 e anteriores: Adicione-o ao array $middleware dentro do seu arquivo app/Http/Kernel.php.
Última atualização