Laravel (PHP)
Integracja ProxyTracer z aplikacją Laravel jest niezwykle prosta. Tworząc standardowy middleware HTTP, możesz zabezpieczyć całą aplikację globalnie lub wybiórczo chronić wrażliwe trasy (np. /login lub /checkout).
Middleware
Natywna metoda $request->ip() w Laravelu automatycznie obsługuje pobieranie IP zza load balancera (zakładając poprawną konfigurację middleware TrustProxies). Do odpytania API używamy fasady Http i odrzucamy żądanie w przypadku wykrycia zagrożenia.
<?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. Pobierz adres IP (Laravel automatycznie i bezpiecznie obsługuje reverse proxy)
$ip = $request->ip();
// Pomiń lokalne adresy IP środowiska deweloperskiego
if (!in_array($ip, ['127.0.0.1', '::1'])) {
try {
// 2. Odpytaj API ProxyTracer ze ścisłym limitem czasu 500 ms
$response = Http::withToken(env('PROXYTRACER_API_KEY'))
->timeout(0.5)
->get("https://api.proxytracer.com/v1/check/{$ip}");
if ($response->successful()) {
// 3. Odrzuć połączenie, jeśli wykryto proxy
if ($response->json('proxy') === true) {
return response()->json([
'error' => 'Access Denied: VPN or Proxy detected.'
], 403);
}
}
} catch (\Exception $e) {
// Fail-open: Zaloguj błąd i przepuść żądanie, aby zapewnić dostępność usługi
Log::warning("ProxyTracer validation failed: " . $e->getMessage());
}
}
// 4. Ruch jest czysty, przekaż żądanie do kontrolera
return $next($request);
}
}Konfiguracja:
Wygeneruj middleware za pomocą php artisan make:middleware ProxyTracerMiddleware.
Aby zastosować middleware globalnie, dodaj go do swojego stosu middleware.
-
Laravel 11: Dodaj go w pliku
bootstrap/app.phpwewnątrz$middleware->append(). -
Laravel 10 i starsze: Dodaj go do tablicy
$middlewarew plikuapp/Http/Kernel.php.
Ostatnia aktualizacja: