mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 15:27:27 +00:00
fix: resolved identity check failing due to comma seperated header in ip
This commit is contained in:
@@ -6,6 +6,7 @@ const headersOrder = [
|
|||||||
"cf-connecting-ip", // Cloudflare
|
"cf-connecting-ip", // Cloudflare
|
||||||
"Cf-Pseudo-IPv4", // Cloudflare
|
"Cf-Pseudo-IPv4", // Cloudflare
|
||||||
"x-client-ip", // Most common
|
"x-client-ip", // Most common
|
||||||
|
"x-envoy-external-address", // for envoy
|
||||||
"x-forwarded-for", // Mostly used by proxies
|
"x-forwarded-for", // Mostly used by proxies
|
||||||
"fastly-client-ip",
|
"fastly-client-ip",
|
||||||
"true-client-ip", // Akamai and Cloudflare
|
"true-client-ip", // Akamai and Cloudflare
|
||||||
@@ -23,7 +24,21 @@ export const fastifyIp = fp(async (fastify) => {
|
|||||||
const forwardedIpHeader = headersOrder.find((header) => Boolean(req.headers[header]));
|
const forwardedIpHeader = headersOrder.find((header) => Boolean(req.headers[header]));
|
||||||
const forwardedIp = forwardedIpHeader ? req.headers[forwardedIpHeader] : undefined;
|
const forwardedIp = forwardedIpHeader ? req.headers[forwardedIpHeader] : undefined;
|
||||||
if (forwardedIp) {
|
if (forwardedIp) {
|
||||||
req.realIp = Array.isArray(forwardedIp) ? forwardedIp[0] : forwardedIp;
|
if (Array.isArray(forwardedIp)) {
|
||||||
|
// eslint-disable-next-line
|
||||||
|
req.realIp = forwardedIp[0];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (forwardedIp.includes(",")) {
|
||||||
|
// the ip header when placed with load balancers that proxy request
|
||||||
|
// will attach the internal ips to header by appending with comma
|
||||||
|
// https://github.com/go-chi/chi/blob/master/middleware/realip.go
|
||||||
|
const clientIPFromProxy = forwardedIp.slice(0, forwardedIp.indexOf(",")).trim();
|
||||||
|
req.realIp = clientIPFromProxy;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
req.realIp = forwardedIp;
|
||||||
} else {
|
} else {
|
||||||
req.realIp = req.ip;
|
req.realIp = req.ip;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user