Skip to Content

Express (Node.js)

O Express é a espinha dorsal do ecossistema Node.js. Para proteger suas rotas de API ou aplicação web, você pode implementar o ProxyTracer como um middleware global ou específico para determinadas rotas.

O Middleware

Esta implementação extrai o IP do cliente (tratando cabeçalhos X-Forwarded-For caso você esteja atrás de um proxy reverso como NGINX ou AWS ALB), consulta o ProxyTracer usando fetch nativo e descarta imediatamente a conexão com um 403 Forbidden se uma ameaça for detectada.

const express = require('express'); const app = express(); // Confie no proxy reverso para garantir que req.ip seja preciso app.set('trust proxy', true); const proxyTracerMiddleware = async (req, res, next) => { // 1. Extraia o IP // O Express gerencia 'trust proxy' automaticamente, mas podemos usar fallback por precaução const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip; // Liberar se for ambiente de desenvolvimento local if (!ip || ip === '::1' || ip === '127.0.0.1') { return next(); } try { // 2. Consulte a API do ProxyTracer (Node 18+ suporta fetch nativo) 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. Encerre a conexão se um proxy/VPN for detectado if (data.proxy === true) { return res.status(403).json({ error: "Access Denied: VPN or Proxy detected." }); } } } catch (error) { // Fail-open: Se a API estiver inacessível, permita o tráfego para garantir a disponibilidade console.error('ProxyTracer API Error:', error); } // 4. O tráfego é legítimo, prossiga para o controller next(); }; // Aplique globalmente a todas as rotas app.use(proxyTracerMiddleware); // Ou aplique estritamente a rotas sensíveis // app.post('/api/checkout', proxyTracerMiddleware, checkoutController);
Última atualização