diff --git a/src/Illuminate/Http/Middleware/TrustProxies.php b/src/Illuminate/Http/Middleware/TrustProxies.php index faf5daf8db3c..81906c1f1951 100644 --- a/src/Illuminate/Http/Middleware/TrustProxies.php +++ b/src/Illuminate/Http/Middleware/TrustProxies.php @@ -92,14 +92,18 @@ protected function setTrustedProxyIpAddressesToTheCallingIp(Request $request) */ protected function getTrustedHeaderNames() { + if (is_int($this->headers)) { + return $this->headers; + } + return match ($this->headers) { - 'HEADER_X_FORWARDED_AWS_ELB', Request::HEADER_X_FORWARDED_AWS_ELB => Request::HEADER_X_FORWARDED_AWS_ELB, - 'HEADER_FORWARDED', Request::HEADER_FORWARDED => Request::HEADER_FORWARDED, - 'HEADER_X_FORWARDED_FOR', Request::HEADER_X_FORWARDED_FOR => Request::HEADER_X_FORWARDED_FOR, - 'HEADER_X_FORWARDED_HOST', Request::HEADER_X_FORWARDED_HOST => Request::HEADER_X_FORWARDED_HOST, - 'HEADER_X_FORWARDED_PORT', Request::HEADER_X_FORWARDED_PORT => Request::HEADER_X_FORWARDED_PORT, - 'HEADER_X_FORWARDED_PROTO', Request::HEADER_X_FORWARDED_PROTO => Request::HEADER_X_FORWARDED_PROTO, - 'HEADER_X_FORWARDED_PREFIX', Request::HEADER_X_FORWARDED_PREFIX => Request::HEADER_X_FORWARDED_PREFIX, + 'HEADER_X_FORWARDED_AWS_ELB' => Request::HEADER_X_FORWARDED_AWS_ELB, + 'HEADER_FORWARDED' => Request::HEADER_FORWARDED, + 'HEADER_X_FORWARDED_FOR' => Request::HEADER_X_FORWARDED_FOR, + 'HEADER_X_FORWARDED_HOST' => Request::HEADER_X_FORWARDED_HOST, + 'HEADER_X_FORWARDED_PORT' => Request::HEADER_X_FORWARDED_PORT, + 'HEADER_X_FORWARDED_PROTO' => Request::HEADER_X_FORWARDED_PROTO, + 'HEADER_X_FORWARDED_PREFIX' => Request::HEADER_X_FORWARDED_PREFIX, default => Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_PREFIX | Request::HEADER_X_FORWARDED_AWS_ELB, }; } diff --git a/tests/Http/Middleware/TrustProxiesTest.php b/tests/Http/Middleware/TrustProxiesTest.php index 67be684a73f3..3aa515a4f9a8 100644 --- a/tests/Http/Middleware/TrustProxiesTest.php +++ b/tests/Http/Middleware/TrustProxiesTest.php @@ -301,8 +301,7 @@ public function test_x_forwarded_multiple_individual_headers_trusted() { $trustedProxy = $this->createTrustedProxy( Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | - Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PREFIX | - Request::HEADER_X_FORWARDED_PROTO, + Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO, '*' ); @@ -316,7 +315,7 @@ public function test_x_forwarded_multiple_individual_headers_trusted() $this->assertSame('serversforhackers.com', $request->getHost(), 'Assert trusted proxy used forwarded header for host'); $this->assertEquals(443, $request->getPort(), 'Assert trusted proxy used forwarded header for port'); - $this->assertSame('/prefix', $request->getBaseUrl(), 'Assert trusted proxy used forwarded header for prefix'); + $this->assertSame('', $request->getBaseUrl(), 'Assert trusted proxy did not use forwarded header for prefix'); }); } @@ -362,7 +361,7 @@ public function test_is_reading_text_based_configurations() * Fake an HTTP request by generating a Symfony Request object. * * @param array $serverOverrides - * @return \Symfony\Component\HttpFoundation\Request + * @return \Illuminate\Http\Request */ protected function createProxiedRequest($serverOverrides = []) {