Homec4science

Normalize remote IP addresses when writing to logs, etc

Authored by epriestley <git@epriestley.com> on Dec 5 2016, 19:25.

Description

Normalize remote IP addresses when writing to logs, etc

Summary:
Ref T11939. IPv4 addresses can normally only be written in one way, but IPv6 addresses have several formats.

For example, the addresses "FFF::", "FfF::", "fff::", "0ffF::", "0fFf:0::", and "0FfF:0:0:0:0:0:0:0" are all the same address.

Normalize all addresses before writing them to logs, etc, so we store the most-preferred form ("fff::", above).

Test Plan:
Ran an SSH clone over IPv6:

$ git fetch ssh://local@::1/diffusion/26/locktopia.git

It worked; verified that address read out of SSH_CLIENT sensibly.

Faked my remote address as a non-preferred-form IPv6 address using preamble.php.

Failed to login, verified that the preferred-form version of the address appeared in the user activity log.

Made IPv6 requests over HTTP:

$ curl -H "Host: local.phacility.com" "http://[::1]/"

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T11939

Differential Revision: https://secure.phabricator.com/D16987

Details

Committed
epriestley <git@epriestley.com>Dec 5 2016, 20:20
Pushed
aubortJan 31 2017, 17:16
Parents
rPH5a060b34df81: Add IPv6 reserved addresses to the default outbound blacklist
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPH6058d3305f82: Normalize remote IP addresses when writing to logs, etc (authored by epriestley <git@epriestley.com>).Dec 5 2016, 20:20