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배열에 추가하세요.
최종 수정일: