Skip to Content

Laravel (PHP)

ProxyTracer를 Laravel 애플리케이션에 통합하는 것은 매우 간단합니다. 표준 HTTP 미들웨어를 생성하면 전체 애플리케이션을 전역적으로 보호하거나 민감한 경로(예: /login 또는 /checkout)에 선택적으로 적용할 수 있습니다.

미들웨어

Laravel의 기본 $request->ip() 메소드는 로드 밸런서 추출을 자동으로 처리합니다(TrustProxies 미들웨어가 올바르게 구성되었다고 가정). 우리는 네이티브 Http 파사드를 사용하여 API를 쿼리하고 플래그가 지정되면 요청을 삭제합니다.

<?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 추출 (Laravel은 리버스 프록시를 자동으로 안전하게 처리합니다) $ip = $request->ip(); // 로컬 개발 IP 건너뛰기 if (!in_array($ip, ['127.0.0.1', '::1'])) { try { // 2. 엄격한 500ms 타임아웃으로 ProxyTracer API 쿼리 $response = Http::withToken(env('PROXYTRACER_API_KEY')) ->timeout(0.5) ->get("https://api.proxytracer.com/v1/check/{$ip}"); if ($response->successful()) { // 3. 프록시가 감지되면 연결 차단 if ($response->json('proxy') === true) { return response()->json([ 'error' => 'Access Denied: VPN or Proxy detected.' ], 403); } } } catch (\Exception $e) { // Fail open: 가동 시간 보장을 위해 오류를 기록하고 요청 허용 Log::warning("ProxyTracer validation failed: " . $e->getMessage()); } } // 4. 정상 트래픽인 경우 컨트롤러로 전달 return $next($request); } }

구성:

php artisan make:middleware ProxyTracerMiddleware를 사용하여 미들웨어를 생성합니다.

전역적으로 적용하려면 미들웨어 스택에 추가하세요.

  • Laravel 11: $middleware->append() 아래의 bootstrap/app.php 파일에 추가하세요.
  • Laravel 10 이하: app/Http/Kernel.php 파일 내의 $middleware 배열에 추가하세요.
최종 수정일: