UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Application Firewall that autonomously protects Node.js apps against common and critical attacks, provides rate limiting, detects malicious traffic (including bots), and more.

39 lines (38 loc) 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ipAllowedToAccessRoute = ipAllowedToAccessRoute; const isLocalhostIP_1 = require("../../helpers/isLocalhostIP"); function ipAllowedToAccessRoute(context, agent) { // Always allow localhost IPs if (context.remoteAddress && (0, isLocalhostIP_1.isLocalhostIP)(context.remoteAddress)) { return true; } // Get all matching endpoints with allowedIPAddresses defined const matches = agent .getConfig() .getEndpoints(context) .filter((m) => m.allowedIPAddresses !== undefined); if (!matches.length) { // No matches found, so we can allow access return true; } if (!context.remoteAddress) { // Always block if remote address is unknown return false; } // Check exact match first // If exact match allows the IP address, we can allow access without checking other matching endpoint configurations const exact = matches.find((m) => m.route === context.route); if (exact && exact.allowedIPAddresses) { if (exact.allowedIPAddresses.has(context.remoteAddress)) { return true; } } for (const endpoint of matches) { const { allowedIPAddresses } = endpoint; if (!allowedIPAddresses.has(context.remoteAddress)) { return false; } } return true; }