Skip to Content
Documentation백엔드 런타임익스프레스(Node.js)

익스프레스(Node.js)

Express는 Node.js 생태계의 중추입니다. API 경로 또는 웹 애플리케이션을 보호하기 위해 ProxyTracer를 전역 또는 경로별 미들웨어로 구현할 수 있습니다.

미들웨어

이 구현은 클라이언트 IP를 추출하고(NGINX 또는 AWS ALB와 같은 역방향 프록시 뒤에 있는 경우 'X-Forwarded-For' 헤더 처리) 기본 'fetch'를 사용하여 ProxyTracer를 쿼리하고 위협이 감지되면 즉시 '403 Forbidden'과의 연결을 삭제합니다.

const express = require('express'); const app = express(); // 리버스 프록시를 신뢰하여 req.ip가 정확한지 확인하십시오 app.set('trust proxy', true); const proxyTracerMiddleware = async (req, res, next) => { // 1. IP 추출 // Express는 'trust proxy'를 자동으로 처리하지만 만약을 대비해 폴백을 제공할 수 있습니다 const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip; // 로컬 개발 환경인 경우 통과 if (!ip || ip === '::1' || ip === '127.0.0.1') { return next(); } try { // 2. ProxyTracer API 쿼리 (Node 18 이상은 네이티브 fetch 지원) const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${ip}`, { method: 'GET', headers: { 'Authorization': `Bearer ${process.env.PROXYTRACER_API_KEY}` } }); if (ptResponse.ok) { const data = await ptResponse.json(); // 3. 프록시/VPN이 감지되면 연결 차단 if (data.proxy === true) { return res.status(403).json({ error: "Access Denied: VPN or Proxy detected." }); } } } catch (error) { // Fail open: API에 연결할 수 없는 경우 가동 시간 보장을 위해 트래픽 허용 console.error('ProxyTracer API Error:', error); } // 4. 정상 트래픽인 경우 컨트롤러로 전달 next(); }; // 모든 라우트에 글로벌하게 적용 app.use(proxyTracerMiddleware); // 또는 민감한 라우트에 엄격하게 적용하십시오 // app.post('/api/checkout', proxyTracerMiddleware, checkoutController);
최종 수정일: