@nifrajs/proxy 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +34 -13
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ const upstream = createProxy({ upstream: "http://127.0.0.1:8081" })
|
|
|
20
20
|
const app = server().mountFetch("/api", upstream, { stripPrefix: true })
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
The upstream is a **bare origin** fixed at construction - the forwarded URL is built by mutating a clone of that origin, never by resolving request-derived strings, so no request input can change which host is dialed. Hop-by-hop and `Connection`-nominated headers are stripped in both directions
|
|
23
|
+
The upstream is a **bare origin** fixed at construction - the forwarded URL is built by mutating a clone of that origin, never by resolving request-derived strings, so no request input can change which host is dialed. Hop-by-hop and `Connection`-nominated headers are stripped in both directions. Caller IP/protocol metadata is dropped unless `forwardClientIp: true`; the inbound Host is never trusted, and `X-Forwarded-Host` is emitted only from a fixed `forwardedHost`. Upstream redirects are never followed, and TLS verification has no off switch. Unreachable upstreams answer a flat `502`; the deadline (`timeoutMs`, default 30s) answers `504`.
|
|
24
24
|
|
|
25
25
|
## Docs
|
|
26
26
|
|
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
* by a `Connection` header, and `Proxy-*` headers are dropped from the forwarded request and from
|
|
11
11
|
* the relayed response (the Connection-nominated leak is the @fastify/http-proxy CVE-2026-33805 /
|
|
12
12
|
* Hono proxy CVE-2026-71849 class). Forwarding metadata (`Forwarded`, `X-Forwarded-*`) is stripped
|
|
13
|
-
* unless `forwardClientIp: true
|
|
14
|
-
*
|
|
13
|
+
* unless explicitly configured. `forwardClientIp: true` emits caller IP/protocol, while
|
|
14
|
+
* `forwardedHost` emits only its fixed authority and never the inbound Host. An inbound IP chain is
|
|
15
|
+
* preserved only with the explicit `trustForwardedFor: true` declaration. Upstream
|
|
15
16
|
* redirects are never followed (`redirect: "manual"`) - following one would let the upstream steer
|
|
16
17
|
* the proxy anywhere. TLS verification is always on; there is no knob to disable it.
|
|
17
18
|
*/
|
|
@@ -117,6 +118,9 @@ export interface ProxyOptions {
|
|
|
117
118
|
* metadata is suppressed rather than passed through.
|
|
118
119
|
*/
|
|
119
120
|
readonly forwardClientIp?: boolean;
|
|
121
|
+
/** Emit a fixed, trusted `X-Forwarded-Host`. The inbound Host is never forwarded: it is
|
|
122
|
+
* attacker-controlled unless an outer adapter has already applied a host policy. */
|
|
123
|
+
readonly forwardedHost?: string;
|
|
120
124
|
/**
|
|
121
125
|
* Preserve an inbound `X-Forwarded-For` chain before appending the observed caller IP. Set this only
|
|
122
126
|
* when a proxy you operate has already stripped and rebuilt the inbound chain; otherwise a directly
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
* by a `Connection` header, and `Proxy-*` headers are dropped from the forwarded request and from
|
|
11
11
|
* the relayed response (the Connection-nominated leak is the @fastify/http-proxy CVE-2026-33805 /
|
|
12
12
|
* Hono proxy CVE-2026-71849 class). Forwarding metadata (`Forwarded`, `X-Forwarded-*`) is stripped
|
|
13
|
-
* unless `forwardClientIp: true
|
|
14
|
-
*
|
|
13
|
+
* unless explicitly configured. `forwardClientIp: true` emits caller IP/protocol, while
|
|
14
|
+
* `forwardedHost` emits only its fixed authority and never the inbound Host. An inbound IP chain is
|
|
15
|
+
* preserved only with the explicit `trustForwardedFor: true` declaration. Upstream
|
|
15
16
|
* redirects are never followed (`redirect: "manual"`) - following one would let the upstream steer
|
|
16
17
|
* the proxy anywhere. TLS verification is always on; there is no knob to disable it.
|
|
17
18
|
*/
|
|
@@ -37,7 +38,7 @@ const HOP_BY_HOP = new Set([
|
|
|
37
38
|
"transfer-encoding",
|
|
38
39
|
"upgrade",
|
|
39
40
|
]);
|
|
40
|
-
/** Forwarding metadata is an explicit opt-in (`forwardClientIp`), never
|
|
41
|
+
/** Forwarding metadata is an explicit opt-in (`forwardClientIp` / `forwardedHost`), never passthrough. */
|
|
41
42
|
const FORWARDING = new Set([
|
|
42
43
|
"forwarded",
|
|
43
44
|
"x-forwarded-for",
|
|
@@ -69,7 +70,7 @@ function dropHeader(name, nominated) {
|
|
|
69
70
|
/**
|
|
70
71
|
* A request header dropped before the hop: it names the proxy (`host`, which the transport derives
|
|
71
72
|
* from the target), is hop-by-hop / Connection-nominated / `proxy-*`, or is forwarding metadata that
|
|
72
|
-
* only
|
|
73
|
+
* only explicit proxy options may reintroduce. The single predicate both lanes filter through.
|
|
73
74
|
*/
|
|
74
75
|
function isDroppedRequestHeader(name, nominated) {
|
|
75
76
|
return name === "host" || dropHeader(name, nominated) || FORWARDING.has(name);
|
|
@@ -88,18 +89,15 @@ function isKeptResponseHeader(name, nominated, bodyEncoded) {
|
|
|
88
89
|
return true;
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
91
|
-
* The `x-forwarded-*` overrides to SET when `forwardClientIp` is on. Shared so the trust
|
|
92
|
-
* one place that may preserve inbound `x-forwarded-for` - cannot diverge between lanes.
|
|
93
|
-
*
|
|
92
|
+
* The caller-IP `x-forwarded-*` overrides to SET when `forwardClientIp` is on. Shared so the trust
|
|
93
|
+
* decision - the one place that may preserve inbound `x-forwarded-for` - cannot diverge between lanes.
|
|
94
|
+
* Host is intentionally absent: only the fixed `forwardedHost` option may emit it.
|
|
94
95
|
*/
|
|
95
|
-
function forwardedClientHeaders(priorXff, requestUrl,
|
|
96
|
-
|
|
96
|
+
function forwardedClientHeaders(priorXff, requestUrl, clientIp, trustInbound) {
|
|
97
|
+
return [
|
|
97
98
|
["x-forwarded-for", trustInbound && priorXff !== null ? `${priorXff}, ${clientIp}` : clientIp],
|
|
98
99
|
["x-forwarded-proto", new URL(requestUrl).protocol.slice(0, -1)],
|
|
99
100
|
];
|
|
100
|
-
if (host !== null)
|
|
101
|
-
overrides.push(["x-forwarded-host", host]);
|
|
102
|
-
return overrides;
|
|
103
101
|
}
|
|
104
102
|
const flatError = (status, error) => new Response(JSON.stringify({ ok: false, error }), {
|
|
105
103
|
status,
|
|
@@ -114,10 +112,12 @@ function upstreamRequestHeaders(req, clientIp, options) {
|
|
|
114
112
|
out.append(name, value);
|
|
115
113
|
}
|
|
116
114
|
if (options.forwardClientIp === true && clientIp !== undefined) {
|
|
117
|
-
for (const [name, value] of forwardedClientHeaders(req.headers.get("x-forwarded-for"), req.url,
|
|
115
|
+
for (const [name, value] of forwardedClientHeaders(req.headers.get("x-forwarded-for"), req.url, clientIp, options.trustForwardedFor === true)) {
|
|
118
116
|
out.set(name, value);
|
|
119
117
|
}
|
|
120
118
|
}
|
|
119
|
+
if (options.forwardedHost !== undefined)
|
|
120
|
+
out.set("x-forwarded-host", options.forwardedHost);
|
|
121
121
|
if (options.headers !== undefined) {
|
|
122
122
|
for (const [name, value] of Object.entries(options.headers))
|
|
123
123
|
out.set(name, value);
|
|
@@ -395,10 +395,12 @@ function nativeRequestHeaders(request, clientIp, options) {
|
|
|
395
395
|
entries.push(name, value);
|
|
396
396
|
};
|
|
397
397
|
if (options.forwardClientIp === true && clientIp !== undefined) {
|
|
398
|
-
for (const [name, value] of forwardedClientHeaders(nativeHeaderValue(request.headers, "x-forwarded-for"), request.url,
|
|
398
|
+
for (const [name, value] of forwardedClientHeaders(nativeHeaderValue(request.headers, "x-forwarded-for"), request.url, clientIp, options.trustForwardedFor === true)) {
|
|
399
399
|
replace(name, value);
|
|
400
400
|
}
|
|
401
401
|
}
|
|
402
|
+
if (options.forwardedHost !== undefined)
|
|
403
|
+
replace("x-forwarded-host", options.forwardedHost);
|
|
402
404
|
if (options.headers !== undefined) {
|
|
403
405
|
for (const [name, value] of Object.entries(options.headers))
|
|
404
406
|
replace(name.toLowerCase(), value);
|
|
@@ -498,6 +500,25 @@ export function createProxy(options) {
|
|
|
498
500
|
if (options.trustForwardedFor === true && options.forwardClientIp !== true) {
|
|
499
501
|
throw new Error("[nifra/proxy] trustForwardedFor requires forwardClientIp: true");
|
|
500
502
|
}
|
|
503
|
+
if (options.forwardedHost !== undefined) {
|
|
504
|
+
let parsed;
|
|
505
|
+
try {
|
|
506
|
+
parsed = new URL(`http://${options.forwardedHost}`);
|
|
507
|
+
}
|
|
508
|
+
catch {
|
|
509
|
+
throw new TypeError("[nifra/proxy] forwardedHost must be a bare host authority");
|
|
510
|
+
}
|
|
511
|
+
if (options.forwardedHost === "" ||
|
|
512
|
+
parsed.host === "" ||
|
|
513
|
+
parsed.username !== "" ||
|
|
514
|
+
parsed.password !== "" ||
|
|
515
|
+
parsed.pathname !== "/" ||
|
|
516
|
+
parsed.search !== "" ||
|
|
517
|
+
parsed.hash !== "" ||
|
|
518
|
+
/[\r\n\s]/.test(options.forwardedHost)) {
|
|
519
|
+
throw new TypeError("[nifra/proxy] forwardedHost must be a bare host authority");
|
|
520
|
+
}
|
|
521
|
+
}
|
|
501
522
|
const timeoutMs = options.timeoutMs ?? 30_000;
|
|
502
523
|
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
503
524
|
throw new Error("[nifra/proxy] timeoutMs must be a positive number");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
* by a `Connection` header, and `Proxy-*` headers are dropped from the forwarded request and from
|
|
11
11
|
* the relayed response (the Connection-nominated leak is the @fastify/http-proxy CVE-2026-33805 /
|
|
12
12
|
* Hono proxy CVE-2026-71849 class). Forwarding metadata (`Forwarded`, `X-Forwarded-*`) is stripped
|
|
13
|
-
* unless `forwardClientIp: true
|
|
14
|
-
*
|
|
13
|
+
* unless explicitly configured. `forwardClientIp: true` emits caller IP/protocol, while
|
|
14
|
+
* `forwardedHost` emits only its fixed authority and never the inbound Host. An inbound IP chain is
|
|
15
|
+
* preserved only with the explicit `trustForwardedFor: true` declaration. Upstream
|
|
15
16
|
* redirects are never followed (`redirect: "manual"`) - following one would let the upstream steer
|
|
16
17
|
* the proxy anywhere. TLS verification is always on; there is no knob to disable it.
|
|
17
18
|
*/
|
|
@@ -136,6 +137,9 @@ export interface ProxyOptions {
|
|
|
136
137
|
* metadata is suppressed rather than passed through.
|
|
137
138
|
*/
|
|
138
139
|
readonly forwardClientIp?: boolean
|
|
140
|
+
/** Emit a fixed, trusted `X-Forwarded-Host`. The inbound Host is never forwarded: it is
|
|
141
|
+
* attacker-controlled unless an outer adapter has already applied a host policy. */
|
|
142
|
+
readonly forwardedHost?: string
|
|
139
143
|
/**
|
|
140
144
|
* Preserve an inbound `X-Forwarded-For` chain before appending the observed caller IP. Set this only
|
|
141
145
|
* when a proxy you operate has already stripped and rebuilt the inbound chain; otherwise a directly
|
|
@@ -180,7 +184,7 @@ const HOP_BY_HOP: ReadonlySet<string> = new Set([
|
|
|
180
184
|
"upgrade",
|
|
181
185
|
])
|
|
182
186
|
|
|
183
|
-
/** Forwarding metadata is an explicit opt-in (`forwardClientIp`), never
|
|
187
|
+
/** Forwarding metadata is an explicit opt-in (`forwardClientIp` / `forwardedHost`), never passthrough. */
|
|
184
188
|
const FORWARDING: ReadonlySet<string> = new Set([
|
|
185
189
|
"forwarded",
|
|
186
190
|
"x-forwarded-for",
|
|
@@ -214,7 +218,7 @@ function dropHeader(name: string, nominated: ReadonlySet<string>): boolean {
|
|
|
214
218
|
/**
|
|
215
219
|
* A request header dropped before the hop: it names the proxy (`host`, which the transport derives
|
|
216
220
|
* from the target), is hop-by-hop / Connection-nominated / `proxy-*`, or is forwarding metadata that
|
|
217
|
-
* only
|
|
221
|
+
* only explicit proxy options may reintroduce. The single predicate both lanes filter through.
|
|
218
222
|
*/
|
|
219
223
|
function isDroppedRequestHeader(name: string, nominated: ReadonlySet<string>): boolean {
|
|
220
224
|
return name === "host" || dropHeader(name, nominated) || FORWARDING.has(name)
|
|
@@ -237,23 +241,20 @@ function isKeptResponseHeader(
|
|
|
237
241
|
}
|
|
238
242
|
|
|
239
243
|
/**
|
|
240
|
-
* The `x-forwarded-*` overrides to SET when `forwardClientIp` is on. Shared so the trust
|
|
241
|
-
* one place that may preserve inbound `x-forwarded-for` - cannot diverge between lanes.
|
|
242
|
-
*
|
|
244
|
+
* The caller-IP `x-forwarded-*` overrides to SET when `forwardClientIp` is on. Shared so the trust
|
|
245
|
+
* decision - the one place that may preserve inbound `x-forwarded-for` - cannot diverge between lanes.
|
|
246
|
+
* Host is intentionally absent: only the fixed `forwardedHost` option may emit it.
|
|
243
247
|
*/
|
|
244
248
|
function forwardedClientHeaders(
|
|
245
249
|
priorXff: string | null,
|
|
246
250
|
requestUrl: string,
|
|
247
|
-
host: string | null,
|
|
248
251
|
clientIp: string,
|
|
249
252
|
trustInbound: boolean,
|
|
250
253
|
): Array<[string, string]> {
|
|
251
|
-
|
|
254
|
+
return [
|
|
252
255
|
["x-forwarded-for", trustInbound && priorXff !== null ? `${priorXff}, ${clientIp}` : clientIp],
|
|
253
256
|
["x-forwarded-proto", new URL(requestUrl).protocol.slice(0, -1)],
|
|
254
257
|
]
|
|
255
|
-
if (host !== null) overrides.push(["x-forwarded-host", host])
|
|
256
|
-
return overrides
|
|
257
258
|
}
|
|
258
259
|
|
|
259
260
|
const flatError = (status: number, error: string): Response =>
|
|
@@ -277,13 +278,13 @@ function upstreamRequestHeaders(
|
|
|
277
278
|
for (const [name, value] of forwardedClientHeaders(
|
|
278
279
|
req.headers.get("x-forwarded-for"),
|
|
279
280
|
req.url,
|
|
280
|
-
req.headers.get("host"),
|
|
281
281
|
clientIp,
|
|
282
282
|
options.trustForwardedFor === true,
|
|
283
283
|
)) {
|
|
284
284
|
out.set(name, value)
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
|
+
if (options.forwardedHost !== undefined) out.set("x-forwarded-host", options.forwardedHost)
|
|
287
288
|
if (options.headers !== undefined) {
|
|
288
289
|
for (const [name, value] of Object.entries(options.headers)) out.set(name, value)
|
|
289
290
|
}
|
|
@@ -605,13 +606,13 @@ function nativeRequestHeaders(
|
|
|
605
606
|
for (const [name, value] of forwardedClientHeaders(
|
|
606
607
|
nativeHeaderValue(request.headers, "x-forwarded-for"),
|
|
607
608
|
request.url,
|
|
608
|
-
nativeHeaderValue(request.headers, "host"),
|
|
609
609
|
clientIp,
|
|
610
610
|
options.trustForwardedFor === true,
|
|
611
611
|
)) {
|
|
612
612
|
replace(name, value)
|
|
613
613
|
}
|
|
614
614
|
}
|
|
615
|
+
if (options.forwardedHost !== undefined) replace("x-forwarded-host", options.forwardedHost)
|
|
615
616
|
if (options.headers !== undefined) {
|
|
616
617
|
for (const [name, value] of Object.entries(options.headers)) replace(name.toLowerCase(), value)
|
|
617
618
|
}
|
|
@@ -734,6 +735,26 @@ export function createProxy(options: ProxyOptions): ProxyHandler {
|
|
|
734
735
|
if (options.trustForwardedFor === true && options.forwardClientIp !== true) {
|
|
735
736
|
throw new Error("[nifra/proxy] trustForwardedFor requires forwardClientIp: true")
|
|
736
737
|
}
|
|
738
|
+
if (options.forwardedHost !== undefined) {
|
|
739
|
+
let parsed: URL
|
|
740
|
+
try {
|
|
741
|
+
parsed = new URL(`http://${options.forwardedHost}`)
|
|
742
|
+
} catch {
|
|
743
|
+
throw new TypeError("[nifra/proxy] forwardedHost must be a bare host authority")
|
|
744
|
+
}
|
|
745
|
+
if (
|
|
746
|
+
options.forwardedHost === "" ||
|
|
747
|
+
parsed.host === "" ||
|
|
748
|
+
parsed.username !== "" ||
|
|
749
|
+
parsed.password !== "" ||
|
|
750
|
+
parsed.pathname !== "/" ||
|
|
751
|
+
parsed.search !== "" ||
|
|
752
|
+
parsed.hash !== "" ||
|
|
753
|
+
/[\r\n\s]/.test(options.forwardedHost)
|
|
754
|
+
) {
|
|
755
|
+
throw new TypeError("[nifra/proxy] forwardedHost must be a bare host authority")
|
|
756
|
+
}
|
|
757
|
+
}
|
|
737
758
|
const timeoutMs = options.timeoutMs ?? 30_000
|
|
738
759
|
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
739
760
|
throw new Error("[nifra/proxy] timeoutMs must be a positive number")
|