Skip to Content

Express (Node.js)

Per le applicazioni Node.js basate su Express, creare un middleware dedicato ti consente di intercettare il traffico malevolo prima che raggiunga le route della tua API o i controller di autenticazione.

Il Middleware

Questa implementazione estrae l'IP del client (gestendo gli header X-Forwarded-For se sei dietro un reverse proxy come NGINX o AWS ALB), interroga ProxyTracer utilizzando fetch nativo e interrompe immediatamente la connessione con un 403 Forbidden se viene rilevata una minaccia.

const express = require('express'); const app = express(); // Fidati del reverse proxy per assicurarti che req.ip sia accurato app.set('trust proxy', true); const proxyTracerMiddleware = async (req, res, next) => { // 1. Estrarre l'IP // Express gestisce 'trust proxy' automaticamente, ma possiamo avere un fallback per ogni evenienza const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip; // Lascia passare in caso di sviluppo locale if (!ip || ip === '::1' || ip === '127.0.0.1') { return next(); } try { // 2. Interroga l'API ProxyTracer (Node 18+ supporta 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. Interrompi la connessione se viene rilevato un proxy/VPN if (data.proxy === true) { return res.status(403).json({ error: "Access Denied: VPN or Proxy detected." }); } } } catch (error) { // Fail open: se l'API non è raggiungibile, consenti il traffico per garantire l'uptime console.error('ProxyTracer API Error:', error); } // 4. Il traffico è pulito, procedi al controller next(); }; // Applica globalmente a tutte le route app.use(proxyTracerMiddleware); // Oppure applica rigorosamente alle route sensibili // app.post('/api/checkout', proxyTracerMiddleware, checkoutController);
Ultimo aggiornamento il