matomo-org/matomo

IP::getNonProxyIpFromHeader retrieves final proxy instead of client

Open

#7,060 opened on Jan 21, 2015

View on GitHub
 (8 comments) (0 reactions) (0 assignees)PHP (2,847 forks)batch import
BugHelp wanted

Repository metrics

Stars
 (21,513 stars)
PR merge metrics
 (Avg merge 8d 11h) (106 merged PRs in 30d)

Description

IP::getNonProxyIpFromHeader attempts to retrieve the client IP address from headers configured in proxy_client_headers[]. This calls IP::getLastIpFromList, excluding proxies configured via proxy_ips[].

What I do not understand is why by default this returns the last IP, whereas the format for X-Forwarded-For is client, proxy1, proxy2, ...: http://en.wikipedia.org/wiki/X-Forwarded-For#Format

This only becomes an issue when running Piwik behind multiple proxies; for example the configuration in question is:

[Enterprise Appliance] => [IIS ARR] => [Piwik]

So Piwik sees:

X-Forwarded-For: <client>, <enterprise_appliance>

Basically the current behavior would seem to select the IP of the last proxy by default. This would be problematic in a scenario with variable proxy IPs.

Contributor guide