Secure Egress Policy
egressPolicy makes outbound network intent reviewable in one object. It adds policy checks on top of security profiles. It does not weaken SSRF defaults unless you explicitly allow a CIDR.
The built-in Node HTTP and HTTP/2 adapters are the enforcement boundary for DNS, CIDR, SNI, private-IP, metadata, and redirect-hop policy. Browser and edge fetch runtimes do not expose enough network detail to provide equivalent enforcement. Route untrusted outbound targets through a trusted Node.js service rather than relying on browser egressPolicy.
Webhook Or User-Controlled URLs
const webhooks = neutrx.create({
security: { profile: 'strict' },
egressPolicy: {
mode: 'webhook-target',
allowedProtocols: ['https'],
allowedPorts: [443],
requireHttps: true,
requirePublicDns: true,
blockCloudMetadata: true,
},
});
await webhooks.get(userProvidedUrl);
Public API Client
const partners = neutrx.create({
baseURL: 'https://api.partner.example',
security: { profile: 'standard' },
egressPolicy: {
mode: 'public-api',
allowedHosts: ['api.partner.example'],
allowRedirectsTo: ['api.partner.example'],
},
});
Internal Service Client
For reviewed private ranges, use explicit CIDRs instead of disabling SSRF broadly:
const inventory = neutrx.create({
baseURL: 'http://10.42.1.10:8080',
security: {
profile: 'standard',
enforceHTTPS: false,
},
egressPolicy: {
mode: 'internal-service',
allowedCidrs: ['10.42.0.0/16'],
deniedCidrs: ['10.42.9.0/24'],
allowedPorts: [8080],
blockCloudMetadata: true,
},
});
allowedCidrs is a narrow exception for private ranges. Cloud metadata remains blocked when blockCloudMetadata is enabled.
Policy Fields
| Field | Effect |
|---|---|
mode |
Preset: public-api, internal-service, webhook-target, legacy-migration |
allowedProtocols |
Allows only listed protocols, without trailing colon |
allowedHosts |
Host allow-list with exact and wildcard patterns |
deniedHosts |
Host deny-list with exact and wildcard patterns |
allowedCidrs |
CIDR ranges that may be reached |
deniedCidrs |
CIDR ranges that are always blocked |
allowedPorts |
Allows only listed effective ports |
requireHttps |
Requires https: URLs |
allowRedirectsTo |
Redirect target host allow-list |
blockCloudMetadata |
Blocks cloud metadata IPv4, IPv6, and host aliases |
requirePublicDns |
Blocks private, loopback, link-local, and metadata DNS answers |
allowedSni |
Requires URL hostname to match reviewed SNI host patterns |
Audit Output
console.log(api.getEgressPolicy());
The audit output is safe to log because it contains policy shape, not credentials or request URLs.