Skip to Content

Express (Node.js)

Express ist das Rückgrat des Node.js-Ökosystems. Um Ihre API-Routen oder Webanwendungen zu schützen, können Sie ProxyTracer als globale oder routenspezifische Middleware implementieren.

Die Middleware

Diese Implementierung extrahiert die Client-IP (und verarbeitet X-Forwarded-For-Header, falls Sie einen Reverse-Proxy wie NGINX oder AWS ALB verwenden), fragt ProxyTracer über natives fetch ab und trennt die Verbindung sofort mit 403 Forbidden, wenn eine Bedrohung erkannt wird.

const express = require('express'); const app = express(); // Vertrauen Sie dem Reverse-Proxy, um sicherzustellen, dass req.ip korrekt ist app.set('trust proxy', true); const proxyTracerMiddleware = async (req, res, next) => { // 1. IP extrahieren // Express verarbeitet 'trust proxy' automatisch, aber wir können zur Sicherheit auf einen Fallback zurückgreifen const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip; // Bei lokaler Entwicklung durchleiten if (!ip || ip === '::1' || ip === '127.0.0.1') { return next(); } try { // 2. ProxyTracer-API abfragen (Node 18+ unterstützt natives 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. Verbindung trennen, falls ein Proxy/VPN erkannt wird if (data.proxy === true) { return res.status(403).json({ error: "Access Denied: VPN or Proxy detected." }); } } } catch (error) { // Fail-Open: Wenn die API nicht erreichbar ist, Traffic erlauben, um die Verfügbarkeit sicherzustellen console.error('ProxyTracer API Error:', error); } // 4. Traffic ist sauber, weiter zum Controller next(); }; // Global auf alle Routen anwenden app.use(proxyTracerMiddleware); // Oder strikt auf sensible Routen anwenden // app.post('/api/checkout', proxyTracerMiddleware, checkoutController);
Zuletzt aktualisiert am