@@ -723,35 +723,37 @@ public function testGetPort()
723
723
'HTTP_X_FORWARDED_PROTO ' => 'https ' ,
724
724
'HTTP_X_FORWARDED_PORT ' => '8443 ' ,
725
725
));
726
- $ port = $ request ->getPort ();
727
-
728
- $ this ->assertEquals (8443 , $ port , 'With PROTO and PORT set PORT takes precedence. ' );
726
+ $ this -> assertEquals ( 80 , $ request ->getPort (), ' With PROTO and PORT on untrusted connection server value takes precedence. ' );
727
+ $ request -> server -> set ( ' REMOTE_ADDR ' , ' 1.1.1.1 ' );
728
+ $ this ->assertEquals (8443 , $ request -> getPort () , 'With PROTO and PORT set PORT takes precedence. ' );
729
729
730
730
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
731
731
'HTTP_X_FORWARDED_PROTO ' => 'https ' ,
732
732
));
733
- $ port = $ request ->getPort ();
734
-
735
- $ this ->assertEquals (443 , $ port , 'With only PROTO set getPort() defaults to 443. ' );
733
+ $ this -> assertEquals ( 80 , $ request ->getPort (), ' With only PROTO set getPort() ignores trusted headers on untrusted connection. ' );
734
+ $ request -> server -> set ( ' REMOTE_ADDR ' , ' 1.1.1.1 ' );
735
+ $ this ->assertEquals (443 , $ request -> getPort () , 'With only PROTO set getPort() defaults to 443. ' );
736
736
737
737
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
738
738
'HTTP_X_FORWARDED_PROTO ' => 'http ' ,
739
739
));
740
- $ port = $ request ->getPort ();
741
-
742
- $ this ->assertEquals (80 , $ port , 'If X_FORWARDED_PROTO is set to HTTP return 80 . ' );
740
+ $ this -> assertEquals ( 80 , $ request ->getPort (), ' If X_FORWARDED_PROTO is set to HTTP getPort() ignores trusted headers on untrusted connection. ' );
741
+ $ request -> server -> set ( ' REMOTE_ADDR ' , ' 1.1.1.1 ' );
742
+ $ this ->assertEquals (80 , $ request -> getPort () , 'If X_FORWARDED_PROTO is set to HTTP getPort() returns port of the original request . ' );
743
743
744
744
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
745
745
'HTTP_X_FORWARDED_PROTO ' => 'On ' ,
746
746
));
747
- $ port = $ request ->getPort ();
748
- $ this ->assertEquals (443 , $ port , 'With only PROTO set and value is On, getPort() defaults to 443. ' );
747
+ $ this ->assertEquals (80 , $ request ->getPort (), 'With only PROTO set and value is On, getPort() ignores trusted headers on untrusted connection. ' );
748
+ $ request ->server ->set ('REMOTE_ADDR ' , '1.1.1.1 ' );
749
+ $ this ->assertEquals (443 , $ request ->getPort (), 'With only PROTO set and value is On, getPort() defaults to 443. ' );
749
750
750
751
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
751
752
'HTTP_X_FORWARDED_PROTO ' => '1 ' ,
752
753
));
753
- $ port = $ request ->getPort ();
754
- $ this ->assertEquals (443 , $ port , 'With only PROTO set and value is 1, getPort() defaults to 443. ' );
754
+ $ this ->assertEquals (80 , $ request ->getPort (), 'With only PROTO set and value is 1, getPort() ignores trusted headers on untrusted connection. ' );
755
+ $ request ->server ->set ('REMOTE_ADDR ' , '1.1.1.1 ' );
756
+ $ this ->assertEquals (443 , $ request ->getPort (), 'With only PROTO set and value is 1, getPort() defaults to 443. ' );
755
757
756
758
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
757
759
'HTTP_X_FORWARDED_PROTO ' => 'something-else ' ,
@@ -1021,6 +1023,8 @@ public function testOverrideGlobals()
1021
1023
$ request ->headers ->set ('X_FORWARDED_PROTO ' , 'https ' );
1022
1024
1023
1025
Request::setTrustedProxies (array ('1.1.1.1 ' ));
1026
+ $ this ->assertFalse ($ request ->isSecure ());
1027
+ $ request ->server ->set ('REMOTE_ADDR ' , '1.1.1.1 ' );
1024
1028
$ this ->assertTrue ($ request ->isSecure ());
1025
1029
Request::setTrustedProxies (array ());
1026
1030
@@ -1480,7 +1484,15 @@ public function testTrustedProxies()
1480
1484
$ this ->assertEquals (443 , $ request ->getPort ());
1481
1485
$ this ->assertTrue ($ request ->isSecure ());
1482
1486
1487
+ // trusted proxy via setTrustedProxies()
1488
+ Request::setTrustedProxies (array ('3.3.3.4 ' , '2.2.2.2 ' ));
1489
+ $ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
1490
+ $ this ->assertEquals ('example.com ' , $ request ->getHost ());
1491
+ $ this ->assertEquals (80 , $ request ->getPort ());
1492
+ $ this ->assertFalse ($ request ->isSecure ());
1493
+
1483
1494
// check various X_FORWARDED_PROTO header values
1495
+ Request::setTrustedProxies (array ('3.3.3.3 ' , '2.2.2.2 ' ));
1484
1496
$ request ->headers ->set ('X_FORWARDED_PROTO ' , 'ssl ' );
1485
1497
$ this ->assertTrue ($ request ->isSecure ());
1486
1498
0 commit comments