Skip to Content

Express (Node.js)

Express is de ruggengraat van het Node.js-ecosysteem. Om je API-routes of webapplicatie te beschermen, kun je ProxyTracer implementeren als een globale of route-specifieke middleware.

De Middleware

Deze implementatie extraheert het client-IP (en verwerkt X-Forwarded-For headers correct als je achter een reverse proxy zoals NGINX of AWS ALB zit), raadpleegt ProxyTracer met native fetch en breekt de verbinding onmiddellijk af met een 403 Forbidden als er een dreiging wordt gedetecteerd.

const express = require('express'); const app = express(); // Vertrouw op de reverse proxy om ervoor te zorgen dat req.ip accuraat is app.set('trust proxy', true); const proxyTracerMiddleware = async (req, res, next) => { // 1. Extraheer het IP-adres // Express handelt 'trust proxy' automatisch af, maar we kunnen een fallback gebruiken voor de zekerheid const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip; // Doorlaten bij lokale ontwikkeling if (!ip || ip === '::1' || ip === '127.0.0.1') { return next(); } try { // 2. Raadpleeg de ProxyTracer API (Node 18+ ondersteunt native 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. Verbreek de verbinding als er een proxy/VPN wordt gedetecteerd if (data.proxy === true) { return res.status(403).json({ error: "Access Denied: VPN or Proxy detected." }); } } } catch (error) { // Fail open: Als de API onbereikbaar is, laat verkeer door om uptime te garanderen console.error('ProxyTracer API Error:', error); } // 4. Verkeer is schoon, ga door naar de controller next(); }; // Globaal toepassen op alle routes app.use(proxyTracerMiddleware); // Of pas strikt toe op gevoelige routes // app.post('/api/checkout', proxyTracerMiddleware, checkoutController);
Laatst bijgewerkt op