Laravel (PHP)
Die Integration von ProxyTracer in eine Laravel-Anwendung ist unglaublich einfach. Indem Sie eine Standard-HTTP-Middleware erstellen, können Sie Ihre gesamte Anwendung global schützen oder den Schutz selektiv auf sensible Routen (wie /login oder /checkout) anwenden.
Die Middleware
Laravels native $request->ip()-Methode kümmert sich automatisch um die Load-Balancer-Extraktion (vorausgesetzt, Ihre TrustProxies-Middleware ist korrekt konfiguriert). Wir verwenden die native Http-Fassade, um die API abzufragen, und verwerfen die Anfrage, wenn sie markiert wird.
<?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. IP extrahieren (Laravel verarbeitet Reverse-Proxys automatisch sicher)
$ip = $request->ip();
// Lokale Entwicklungs-IPs überspringen
if (!in_array($ip, ['127.0.0.1', '::1'])) {
try {
// 2. ProxyTracer-API mit einem strikten 500ms-Timeout abfragen
$response = Http::withToken(env('PROXYTRACER_API_KEY'))
->timeout(0.5)
->get("https://api.proxytracer.com/v1/check/{$ip}");
if ($response->successful()) {
// 3. Verbindung trennen, falls ein Proxy erkannt wird
if ($response->json('proxy') === true) {
return response()->json([
'error' => 'Access Denied: VPN or Proxy detected.'
], 403);
}
}
} catch (\Exception $e) {
// Fail-Open: Fehler protokollieren und Anfrage zulassen, um die Verfügbarkeit sicherzustellen
Log::warning("ProxyTracer validation failed: " . $e->getMessage());
}
}
// 4. Traffic ist sauber, weiter zum Controller
return $next($request);
}
}Konfiguration:
Generieren Sie die Middleware mittels php artisan make:middleware ProxyTracerMiddleware.
Um sie global anzuwenden, fügen Sie sie Ihrem Middleware-Stack hinzu.
-
Laravel 11: Fügen Sie es in Ihrer Datei
bootstrap/app.phpunter$middleware->append()hinzu. -
Laravel 10 und niedriger: Fügen Sie es dem Array
$middlewarein Ihrer Dateiapp/Http/Kernel.phphinzu.
Zuletzt aktualisiert am