From 5bf5b5e6c9edce697aca604ec4a580db6fcac0ea Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 23 Jun 2022 23:01:09 +0200 Subject: [PATCH] adaptions :-) --- src/App/Request.php | 13 +++++++++---- tests/src/App/RequestTest.php | 2 +- tests/src/Model/User/CookieTest.php | 4 ++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/App/Request.php b/src/App/Request.php index 43cabba85..83f7d25ca 100644 --- a/src/App/Request.php +++ b/src/App/Request.php @@ -32,8 +32,13 @@ use Friendica\Core\Config\Capability\IManageConfigValues; */ class Request { - /** @var string the default possible headers, which could contain the client IP */ - const ORDERED_FORWARD_FOR_HEADER = 'HTTP_X_FORWARDED_FOR'; + /** + * A comma separated list of default headers that could contain the client IP in a proxy request + * Beware: This list is ordered + * + * @var string + */ + const DEFAULT_FORWARD_FOR_HEADER = 'HTTP_X_FORWARDED_FOR'; /** @var string The remote IP address of the current request */ protected $remoteAddress; @@ -108,7 +113,7 @@ class Request * specified in this header will be returned instead. * * @param IManageConfigValues $config - * @param array $server + * @param array $server The $_SERVER array * * @return string */ @@ -118,7 +123,7 @@ class Request $trustedProxies = preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', $config->get('proxy', 'trusted_proxies', '')); if (\is_array($trustedProxies) && $this->isTrustedProxy($trustedProxies, $remoteAddress)) { - $forwardedForHeaders = preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', $config->get('proxy', 'forwarded_for_headers')) ?? static::ORDERED_FORWARD_FOR_HEADER; + $forwardedForHeaders = preg_split('/(\s*,*\s*)*,+(\s*,*\s*)*/', $config->get('proxy', 'forwarded_for_headers', static::DEFAULT_FORWARD_FOR_HEADER)); foreach ($forwardedForHeaders as $header) { if (isset($server[$header])) { diff --git a/tests/src/App/RequestTest.php b/tests/src/App/RequestTest.php index e4379b052..4ab557358 100644 --- a/tests/src/App/RequestTest.php +++ b/tests/src/App/RequestTest.php @@ -120,7 +120,7 @@ class RequestTest extends MockedTest { $configClass = \Mockery::mock(IManageConfigValues::class); $configClass->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn($config['trusted_proxies']); - $configClass->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn($config['forwarded_for_headers']); + $configClass->shouldReceive('get')->with('proxy', 'forwarded_for_headers', Request::DEFAULT_FORWARD_FOR_HEADER)->andReturn($config['forwarded_for_headers']); $request = new Request($configClass, $server); diff --git a/tests/src/Model/User/CookieTest.php b/tests/src/Model/User/CookieTest.php index b5db34952..fa99a0b75 100644 --- a/tests/src/Model/User/CookieTest.php +++ b/tests/src/Model/User/CookieTest.php @@ -252,7 +252,7 @@ class CookieTest extends MockedTest $this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once(); $this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once(); $this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once(); - $this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::ORDERED_FORWARD_FOR_HEADER); + $this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::DEFAULT_FORWARD_FOR_HEADER); $request = new Request($this->config, $serverArray); @@ -279,7 +279,7 @@ class CookieTest extends MockedTest $this->config->shouldReceive('get')->with('system', 'site_prvkey')->andReturn($serverKey)->once(); $this->config->shouldReceive('get')->with('system', 'auth_cookie_lifetime', Cookie::DEFAULT_EXPIRE)->andReturn(Cookie::DEFAULT_EXPIRE)->once(); $this->config->shouldReceive('get')->with('proxy', 'trusted_proxies', '')->andReturn('')->once(); - $this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::ORDERED_FORWARD_FOR_HEADER); + $this->config->shouldReceive('get')->with('proxy', 'forwarded_for_headers')->andReturn(Request::DEFAULT_FORWARD_FOR_HEADER); $request = new Request($this->config, $serverArray);