Skip to content

Commit 0991f1e

Browse files
committedApr 1, 2021
HEADER_X_FORWARDED_ALL was deprecated in Symfony 5.2
1 parent 97c09bf commit 0991f1e

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed
 

‎phpunit.xml.dist

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<phpunit backupGlobals="false"
33
backupStaticAttributes="false"
4+
beStrictAboutTestsThatDoNotTestAnything="false"
45
bootstrap="vendor/autoload.php"
56
colors="true"
67
convertErrorsToExceptions="true"
78
convertNoticesToExceptions="true"
89
convertWarningsToExceptions="true"
910
processIsolation="false"
11+
stopOnError="false"
1012
stopOnFailure="false"
11-
syntaxCheck="false"
13+
verbose="true"
1214
>
1315
<testsuites>
1416
<testsuite name="Trusted Proxy Test Suite">

‎src/TrustProxies.php

+17-3
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,24 @@ protected function getTrustedHeaderNames()
119119
case Request::HEADER_FORWARDED:
120120
return Request::HEADER_FORWARDED;
121121
break;
122-
case 'HEADER_X_FORWARDED_ALL':
123-
case Request::HEADER_X_FORWARDED_ALL:
124-
return Request::HEADER_X_FORWARDED_ALL;
122+
case 'HEADER_X_FORWARDED_FOR':
123+
case Request::HEADER_X_FORWARDED_FOR:
124+
return Request::HEADER_X_FORWARDED_FOR;
125125
break;
126+
case 'HEADER_X_FORWARDED_HOST':
127+
case Request::HEADER_X_FORWARDED_HOST:
128+
return Request::HEADER_X_FORWARDED_HOST;
129+
break;
130+
case 'HEADER_X_FORWARDED_PORT':
131+
case Request::HEADER_X_FORWARDED_PORT:
132+
return Request::HEADER_X_FORWARDED_PORT;
133+
break;
134+
case 'HEADER_X_FORWARDED_PROTO':
135+
case Request::HEADER_X_FORWARDED_PROTO:
136+
return Request::HEADER_X_FORWARDED_PROTO;
137+
break;
138+
default:
139+
return Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB;
126140
}
127141

128142
return $headers;

‎tests/TrustedProxyTest.php

+11-9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
class TrustedProxyTest extends TestCase
88
{
9+
private $headerAll = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB;
10+
911
/**
1012
* Test that Symfony does indeed NOT trust X-Forwarded-*
1113
* headers when not given trusted proxies
@@ -34,7 +36,7 @@ public function test_request_does_not_trust()
3436
public function test_does_trust_trusted_proxy()
3537
{
3638
$req = $this->createProxiedRequest();
37-
$req->setTrustedProxies(['192.168.10.10'], Request::HEADER_X_FORWARDED_ALL);
39+
$req->setTrustedProxies(['192.168.10.10'], $this->headerAll);
3840

3941
$this->assertEquals('173.174.200.38', $req->getClientIp(), 'Assert trusted proxy x-forwarded-for header used');
4042
$this->assertEquals('https', $req->getScheme(), 'Assert trusted proxy x-forwarded-proto header used');
@@ -48,7 +50,7 @@ public function test_does_trust_trusted_proxy()
4850
*/
4951
public function test_trusted_proxy_sets_trusted_proxies_with_wildcard()
5052
{
51-
$trustedProxy = $this->createTrustedProxy(Request::HEADER_X_FORWARDED_ALL, '*');
53+
$trustedProxy = $this->createTrustedProxy($this->headerAll, '*');
5254
$request = $this->createProxiedRequest();
5355

5456
$trustedProxy->handle($request, function ($request) {
@@ -62,7 +64,7 @@ public function test_trusted_proxy_sets_trusted_proxies_with_wildcard()
6264
*/
6365
public function test_trusted_proxy_sets_trusted_proxies_with_double_wildcard_for_backwards_compat()
6466
{
65-
$trustedProxy = $this->createTrustedProxy(Request::HEADER_X_FORWARDED_ALL, '**');
67+
$trustedProxy = $this->createTrustedProxy($this->headerAll, '**');
6668
$request = $this->createProxiedRequest();
6769

6870
$trustedProxy->handle($request, function ($request) {
@@ -76,7 +78,7 @@ public function test_trusted_proxy_sets_trusted_proxies_with_double_wildcard_for
7678
*/
7779
public function test_trusted_proxy_sets_trusted_proxies()
7880
{
79-
$trustedProxy = $this->createTrustedProxy(Request::HEADER_X_FORWARDED_ALL, ['192.168.10.10']);
81+
$trustedProxy = $this->createTrustedProxy($this->headerAll, ['192.168.10.10']);
8082
$request = $this->createProxiedRequest();
8183

8284
$trustedProxy->handle($request, function ($request) {
@@ -89,7 +91,7 @@ public function test_trusted_proxy_sets_trusted_proxies()
8991
*/
9092
public function test_get_client_ips()
9193
{
92-
$trustedProxy = $this->createTrustedProxy(Request::HEADER_X_FORWARDED_ALL, ['192.168.10.10']);
94+
$trustedProxy = $this->createTrustedProxy($this->headerAll, ['192.168.10.10']);
9395

9496
$forwardedFor = [
9597
'192.0.2.2',
@@ -113,7 +115,7 @@ public function test_get_client_ips()
113115
*/
114116
public function test_get_client_ip_with_muliple_ip_addresses_some_of_which_are_trusted()
115117
{
116-
$trustedProxy = $this->createTrustedProxy(Request::HEADER_X_FORWARDED_ALL, ['192.168.10.10', '192.0.2.199']);
118+
$trustedProxy = $this->createTrustedProxy($this->headerAll, ['192.168.10.10', '192.0.2.199']);
117119

118120
$forwardedFor = [
119121
'192.0.2.2',
@@ -136,7 +138,7 @@ public function test_get_client_ip_with_muliple_ip_addresses_some_of_which_are_t
136138
*/
137139
public function test_get_client_ip_with_muliple_ip_addresses_all_proxies_are_trusted()
138140
{
139-
$trustedProxy = $this->createTrustedProxy(Request::HEADER_X_FORWARDED_ALL, '*');
141+
$trustedProxy = $this->createTrustedProxy($this->headerAll, '*');
140142

141143
$forwardedFor = [
142144
'192.0.2.2',
@@ -294,7 +296,7 @@ public function test_is_reading_text_based_configurations()
294296
// trust *all* "X-Forwarded-*" headers
295297
$trustedProxy = $this->createTrustedProxy('HEADER_X_FORWARDED_ALL', '192.168.1.1, 192.168.1.2');
296298
$trustedProxy->handle($request, function (Request $request) {
297-
$this->assertEquals($request->getTrustedHeaderSet(), Request::HEADER_X_FORWARDED_ALL,
299+
$this->assertEquals($request->getTrustedHeaderSet(), $this->headerAll,
298300
'Assert trusted proxy used all "X-Forwarded-*" header');
299301

300302
$this->assertEquals($request->getTrustedProxies(), ['192.168.1.1', '192.168.1.2'],
@@ -351,7 +353,7 @@ protected function createProxiedRequest($serverOverRides = [])
351353
// which is likely something like this:
352354
$request = Request::create('http://localhost:8888/tag/proxy', 'GET', [], [], [], $serverOverRides, null);
353355
// Need to make sure these haven't already been set
354-
$request->setTrustedProxies([], Request::HEADER_X_FORWARDED_ALL);
356+
$request->setTrustedProxies([], $this->headerAll);
355357

356358
return $request;
357359
}

0 commit comments

Comments
 (0)