@@ -722,35 +722,37 @@ public function testGetPort()
722
722
'HTTP_X_FORWARDED_PROTO ' => 'https ' ,
723
723
'HTTP_X_FORWARDED_PORT ' => '8443 ' ,
724
724
));
725
- $ port = $ request ->getPort ();
726
-
727
- $ this ->assertEquals (8443 , $ port , 'With PROTO and PORT set PORT takes precedence. ' );
725
+ $ this -> assertEquals ( 80 , $ request ->getPort (), ' With PROTO and PORT on untrusted connection server value takes precedence. ' );
726
+ $ request -> server -> set ( ' REMOTE_ADDR ' , ' 1.1.1.1 ' );
727
+ $ this ->assertEquals (8443 , $ request -> getPort () , 'With PROTO and PORT set PORT takes precedence. ' );
728
728
729
729
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
730
730
'HTTP_X_FORWARDED_PROTO ' => 'https ' ,
731
731
));
732
- $ port = $ request ->getPort ();
733
-
734
- $ this ->assertEquals (443 , $ port , 'With only PROTO set getPort() defaults to 443. ' );
732
+ $ this -> assertEquals ( 80 , $ request ->getPort (), ' With only PROTO set getPort() ignores trusted headers on untrusted connection. ' );
733
+ $ request -> server -> set ( ' REMOTE_ADDR ' , ' 1.1.1.1 ' );
734
+ $ this ->assertEquals (443 , $ request -> getPort () , 'With only PROTO set getPort() defaults to 443. ' );
735
735
736
736
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
737
737
'HTTP_X_FORWARDED_PROTO ' => 'http ' ,
738
738
));
739
- $ port = $ request ->getPort ();
740
-
741
- $ this ->assertEquals (80 , $ port , 'If X_FORWARDED_PROTO is set to HTTP return 80 . ' );
739
+ $ this -> assertEquals ( 80 , $ request ->getPort (), ' If X_FORWARDED_PROTO is set to HTTP getPort() ignores trusted headers on untrusted connection. ' );
740
+ $ request -> server -> set ( ' REMOTE_ADDR ' , ' 1.1.1.1 ' );
741
+ $ this ->assertEquals (80 , $ request -> getPort () , 'If X_FORWARDED_PROTO is set to HTTP getPort() returns port of the original request . ' );
742
742
743
743
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
744
744
'HTTP_X_FORWARDED_PROTO ' => 'On ' ,
745
745
));
746
- $ port = $ request ->getPort ();
747
- $ this ->assertEquals (443 , $ port , 'With only PROTO set and value is On, getPort() defaults to 443. ' );
746
+ $ this ->assertEquals (80 , $ request ->getPort (), 'With only PROTO set and value is On, getPort() ignores trusted headers on untrusted connection. ' );
747
+ $ request ->server ->set ('REMOTE_ADDR ' , '1.1.1.1 ' );
748
+ $ this ->assertEquals (443 , $ request ->getPort (), 'With only PROTO set and value is On, getPort() defaults to 443. ' );
748
749
749
750
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
750
751
'HTTP_X_FORWARDED_PROTO ' => '1 ' ,
751
752
));
752
- $ port = $ request ->getPort ();
753
- $ this ->assertEquals (443 , $ port , 'With only PROTO set and value is 1, getPort() defaults to 443. ' );
753
+ $ this ->assertEquals (80 , $ request ->getPort (), 'With only PROTO set and value is 1, getPort() ignores trusted headers on untrusted connection. ' );
754
+ $ request ->server ->set ('REMOTE_ADDR ' , '1.1.1.1 ' );
755
+ $ this ->assertEquals (443 , $ request ->getPort (), 'With only PROTO set and value is 1, getPort() defaults to 443. ' );
754
756
755
757
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
756
758
'HTTP_X_FORWARDED_PROTO ' => 'something-else ' ,
@@ -1020,6 +1022,8 @@ public function testOverrideGlobals()
1020
1022
$ request ->headers ->set ('X_FORWARDED_PROTO ' , 'https ' );
1021
1023
1022
1024
Request::setTrustedProxies (array ('1.1.1.1 ' ));
1025
+ $ this ->assertFalse ($ request ->isSecure ());
1026
+ $ request ->server ->set ('REMOTE_ADDR ' , '1.1.1.1 ' );
1023
1027
$ this ->assertTrue ($ request ->isSecure ());
1024
1028
Request::setTrustedProxies (array ());
1025
1029
@@ -1455,7 +1459,15 @@ public function testTrustedProxies()
1455
1459
$ this ->assertEquals (443 , $ request ->getPort ());
1456
1460
$ this ->assertTrue ($ request ->isSecure ());
1457
1461
1462
+ // trusted proxy via setTrustedProxies()
1463
+ Request::setTrustedProxies (array ('3.3.3.4 ' , '2.2.2.2 ' ));
1464
+ $ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
1465
+ $ this ->assertEquals ('example.com ' , $ request ->getHost ());
1466
+ $ this ->assertEquals (80 , $ request ->getPort ());
1467
+ $ this ->assertFalse ($ request ->isSecure ());
1468
+
1458
1469
// check various X_FORWARDED_PROTO header values
1470
+ Request::setTrustedProxies (array ('3.3.3.3 ' , '2.2.2.2 ' ));
1459
1471
$ request ->headers ->set ('X_FORWARDED_PROTO ' , 'ssl ' );
1460
1472
$ this ->assertTrue ($ request ->isSecure ());
1461
1473
0 commit comments