19
19
20
20
class RequestTest extends TestCase
21
21
{
22
+ protected function tearDown ()
23
+ {
24
+ // reset
25
+ Request::setTrustedProxies (array (), Request::HEADER_CLIENT_IP );
26
+ Request::setTrustedHeaderName (Request::HEADER_FORWARDED , 'FORWARDED ' );
27
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_IP , 'X_FORWARDED_FOR ' );
28
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_HOST , 'X_FORWARDED_HOST ' );
29
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_PORT , 'X_FORWARDED_PORT ' );
30
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_PROTO , 'X_FORWARDED_PROTO ' );
31
+ }
32
+
22
33
public function testInitialize ()
23
34
{
24
35
$ request = new Request ();
@@ -727,7 +738,7 @@ public function testGetPort()
727
738
728
739
$ this ->assertEquals (80 , $ port , 'Without trusted proxies FORWARDED_PROTO and FORWARDED_PORT are ignored. ' );
729
740
730
- Request::setTrustedProxies (array ('1.1.1.1 ' ));
741
+ Request::setTrustedProxies (array ('1.1.1.1 ' ), Request:: HEADER_CLIENT_IP );
731
742
$ request = Request::create ('http://example.com ' , 'GET ' , array (), array (), array (), array (
732
743
'HTTP_X_FORWARDED_PROTO ' => 'https ' ,
733
744
'HTTP_X_FORWARDED_PORT ' => '8443 ' ,
@@ -769,8 +780,6 @@ public function testGetPort()
769
780
));
770
781
$ port = $ request ->getPort ();
771
782
$ this ->assertEquals (80 , $ port , 'With only PROTO set and value is not recognized, getPort() defaults to 80. ' );
772
-
773
- Request::setTrustedProxies (array ());
774
783
}
775
784
776
785
/**
@@ -846,8 +855,6 @@ public function testGetClientIp($expected, $remoteAddr, $httpForwardedFor, $trus
846
855
$ request = $ this ->getRequestInstanceForClientIpTests ($ remoteAddr , $ httpForwardedFor , $ trustedProxies );
847
856
848
857
$ this ->assertEquals ($ expected [0 ], $ request ->getClientIp ());
849
-
850
- Request::setTrustedProxies (array ());
851
858
}
852
859
853
860
/**
@@ -858,8 +865,6 @@ public function testGetClientIps($expected, $remoteAddr, $httpForwardedFor, $tru
858
865
$ request = $ this ->getRequestInstanceForClientIpTests ($ remoteAddr , $ httpForwardedFor , $ trustedProxies );
859
866
860
867
$ this ->assertEquals ($ expected , $ request ->getClientIps ());
861
-
862
- Request::setTrustedProxies (array ());
863
868
}
864
869
865
870
/**
@@ -870,8 +875,6 @@ public function testGetClientIpsForwarded($expected, $remoteAddr, $httpForwarded
870
875
$ request = $ this ->getRequestInstanceForClientIpsForwardedTests ($ remoteAddr , $ httpForwarded , $ trustedProxies );
871
876
872
877
$ this ->assertEquals ($ expected , $ request ->getClientIps ());
873
-
874
- Request::setTrustedProxies (array ());
875
878
}
876
879
877
880
public function testGetClientIpsForwardedProvider ()
@@ -956,7 +959,9 @@ public function testGetClientIpsWithConflictingHeaders($httpForwarded, $httpXFor
956
959
'HTTP_X_FORWARDED_FOR ' => $ httpXForwardedFor ,
957
960
);
958
961
959
- Request::setTrustedProxies (array ('88.88.88.88 ' ));
962
+ Request::setTrustedProxies (array ('88.88.88.88 ' ), Request::HEADER_CLIENT_IP );
963
+ Request::setTrustedHeaderName (Request::HEADER_FORWARDED , 'FORWARDED ' );
964
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_IP , 'X_FORWARDED_FOR ' );
960
965
961
966
$ request ->initialize (array (), array (), array (), array (), array (), $ server );
962
967
@@ -988,13 +993,11 @@ public function testGetClientIpsWithAgreeingHeaders($httpForwarded, $httpXForwar
988
993
'HTTP_X_FORWARDED_FOR ' => $ httpXForwardedFor ,
989
994
);
990
995
991
- Request::setTrustedProxies (array ('88.88.88.88 ' ));
996
+ Request::setTrustedProxies (array ('88.88.88.88 ' ), Request:: HEADER_CLIENT_IP );
992
997
993
998
$ request ->initialize (array (), array (), array (), array (), array (), $ server );
994
999
995
1000
$ request ->getClientIps ();
996
-
997
- Request::setTrustedProxies (array ());
998
1001
}
999
1002
1000
1003
public function testGetClientIpsWithAgreeingHeadersProvider ()
@@ -1177,11 +1180,10 @@ public function testOverrideGlobals()
1177
1180
1178
1181
$ request ->headers ->set ('X_FORWARDED_PROTO ' , 'https ' );
1179
1182
1180
- Request::setTrustedProxies (array ('1.1.1.1 ' ));
1183
+ Request::setTrustedProxies (array ('1.1.1.1 ' ), Request:: HEADER_CLIENT_IP );
1181
1184
$ this ->assertFalse ($ request ->isSecure ());
1182
1185
$ request ->server ->set ('REMOTE_ADDR ' , '1.1.1.1 ' );
1183
1186
$ this ->assertTrue ($ request ->isSecure ());
1184
- Request::setTrustedProxies (array ());
1185
1187
1186
1188
$ request ->overrideGlobals ();
1187
1189
@@ -1644,7 +1646,7 @@ private function getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedF
1644
1646
}
1645
1647
1646
1648
if ($ trustedProxies ) {
1647
- Request::setTrustedProxies ($ trustedProxies );
1649
+ Request::setTrustedProxies ($ trustedProxies, Request:: HEADER_CLIENT_IP );
1648
1650
}
1649
1651
1650
1652
$ request ->initialize (array (), array (), array (), array (), array (), $ server );
@@ -1663,7 +1665,7 @@ private function getRequestInstanceForClientIpsForwardedTests($remoteAddr, $http
1663
1665
}
1664
1666
1665
1667
if ($ trustedProxies ) {
1666
- Request::setTrustedProxies ($ trustedProxies );
1668
+ Request::setTrustedProxies ($ trustedProxies, Request:: HEADER_FORWARDED );
1667
1669
}
1668
1670
1669
1671
$ request ->initialize (array (), array (), array (), array (), array (), $ server );
@@ -1691,35 +1693,35 @@ public function testTrustedProxies()
1691
1693
$ this ->assertFalse ($ request ->isSecure ());
1692
1694
1693
1695
// disabling proxy trusting
1694
- Request::setTrustedProxies (array ());
1696
+ Request::setTrustedProxies (array (), Request:: HEADER_CLIENT_IP );
1695
1697
$ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
1696
1698
$ this ->assertEquals ('example.com ' , $ request ->getHost ());
1697
1699
$ this ->assertEquals (80 , $ request ->getPort ());
1698
1700
$ this ->assertFalse ($ request ->isSecure ());
1699
1701
1700
1702
// request is forwarded by a non-trusted proxy
1701
- Request::setTrustedProxies (array ('2.2.2.2 ' ));
1703
+ Request::setTrustedProxies (array ('2.2.2.2 ' ), Request:: HEADER_CLIENT_IP );
1702
1704
$ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
1703
1705
$ this ->assertEquals ('example.com ' , $ request ->getHost ());
1704
1706
$ this ->assertEquals (80 , $ request ->getPort ());
1705
1707
$ this ->assertFalse ($ request ->isSecure ());
1706
1708
1707
1709
// trusted proxy via setTrustedProxies()
1708
- Request::setTrustedProxies (array ('3.3.3.3 ' , '2.2.2.2 ' ));
1710
+ Request::setTrustedProxies (array ('3.3.3.3 ' , '2.2.2.2 ' ), Request:: HEADER_CLIENT_IP );
1709
1711
$ this ->assertEquals ('1.1.1.1 ' , $ request ->getClientIp ());
1710
1712
$ this ->assertEquals ('real.example.com ' , $ request ->getHost ());
1711
1713
$ this ->assertEquals (443 , $ request ->getPort ());
1712
1714
$ this ->assertTrue ($ request ->isSecure ());
1713
1715
1714
1716
// trusted proxy via setTrustedProxies()
1715
- Request::setTrustedProxies (array ('3.3.3.4 ' , '2.2.2.2 ' ));
1717
+ Request::setTrustedProxies (array ('3.3.3.4 ' , '2.2.2.2 ' ), Request:: HEADER_CLIENT_IP );
1716
1718
$ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
1717
1719
$ this ->assertEquals ('example.com ' , $ request ->getHost ());
1718
1720
$ this ->assertEquals (80 , $ request ->getPort ());
1719
1721
$ this ->assertFalse ($ request ->isSecure ());
1720
1722
1721
1723
// check various X_FORWARDED_PROTO header values
1722
- Request::setTrustedProxies (array ('3.3.3.3 ' , '2.2.2.2 ' ));
1724
+ Request::setTrustedProxies (array ('3.3.3.3 ' , '2.2.2.2 ' ), Request:: HEADER_CLIENT_IP );
1723
1725
$ request ->headers ->set ('X_FORWARDED_PROTO ' , 'ssl ' );
1724
1726
$ this ->assertTrue ($ request ->isSecure ());
1725
1727
@@ -1745,13 +1747,6 @@ public function testTrustedProxies()
1745
1747
$ this ->assertEquals ('example.com ' , $ request ->getHost ());
1746
1748
$ this ->assertEquals (80 , $ request ->getPort ());
1747
1749
$ this ->assertFalse ($ request ->isSecure ());
1748
-
1749
- // reset
1750
- Request::setTrustedProxies (array ());
1751
- Request::setTrustedHeaderName (Request::HEADER_CLIENT_IP , 'X_FORWARDED_FOR ' );
1752
- Request::setTrustedHeaderName (Request::HEADER_CLIENT_HOST , 'X_FORWARDED_HOST ' );
1753
- Request::setTrustedHeaderName (Request::HEADER_CLIENT_PORT , 'X_FORWARDED_PORT ' );
1754
- Request::setTrustedHeaderName (Request::HEADER_CLIENT_PROTO , 'X_FORWARDED_PROTO ' );
1755
1750
}
1756
1751
1757
1752
/**
@@ -2062,6 +2057,66 @@ public function methodCacheableProvider()
2062
2057
array ('CONNECT ' , false ),
2063
2058
);
2064
2059
}
2060
+
2061
+ /**
2062
+ * @group legacy
2063
+ * @expectedDeprecation The Symfony\Component\HttpFoundation\Request::setTrustedProxies() method expects Request::HEADER_FORWARDED or Request::HEADER_CLIENT_IP as second argument. Not passing it is deprecated since version 3.3 and will be required in 4.0.
2064
+ */
2065
+ public function testLegacySetTrustedProxies ()
2066
+ {
2067
+ Request::setTrustedProxies (array ('8.8.8.8 ' ));
2068
+
2069
+ $ this ->assertSame ('FORWARDED ' , Request::getTrustedHeaderName (Request::HEADER_FORWARDED ));
2070
+ $ this ->assertSame ('X_FORWARDED_FOR ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_IP ));
2071
+ $ this ->assertSame ('X_FORWARDED_HOST ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_HOST ));
2072
+ $ this ->assertSame ('X_FORWARDED_PORT ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_PORT ));
2073
+ $ this ->assertSame ('X_FORWARDED_PROTO ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_PROTO ));
2074
+ }
2075
+
2076
+ public function testSetTrustedProxies ()
2077
+ {
2078
+ Request::setTrustedProxies (array ('8.8.8.8 ' ), Request::HEADER_CLIENT_IP );
2079
+
2080
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_FORWARDED ));
2081
+ $ this ->assertSame ('X_FORWARDED_FOR ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_IP ));
2082
+ $ this ->assertSame ('X_FORWARDED_HOST ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_HOST ));
2083
+ $ this ->assertSame ('X_FORWARDED_PORT ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_PORT ));
2084
+ $ this ->assertSame ('X_FORWARDED_PROTO ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_PROTO ));
2085
+
2086
+ Request::setTrustedProxies (array ('8.8.8.8 ' ), Request::HEADER_FORWARDED );
2087
+
2088
+ $ this ->assertSame ('FORWARDED ' , Request::getTrustedHeaderName (Request::HEADER_FORWARDED ));
2089
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_IP ));
2090
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_HOST ));
2091
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_PORT ));
2092
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_PROTO ));
2093
+
2094
+ Request::setTrustedHeaderName (Request::HEADER_FORWARDED , 'A ' );
2095
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_IP , 'B ' );
2096
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_HOST , 'C ' );
2097
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_PORT , 'D ' );
2098
+ Request::setTrustedHeaderName (Request::HEADER_CLIENT_PROTO , 'E ' );
2099
+
2100
+ Request::setTrustedProxies (array ('8.8.8.8 ' ), Request::HEADER_FORWARDED );
2101
+
2102
+ $ this ->assertSame ('A ' , Request::getTrustedHeaderName (Request::HEADER_FORWARDED ));
2103
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_IP ));
2104
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_HOST ));
2105
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_PORT ));
2106
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_CLIENT_PROTO ));
2107
+
2108
+ Request::setTrustedProxies (array ('8.8.8.8 ' ), Request::HEADER_CLIENT_IP );
2109
+
2110
+ $ this ->assertNull (Request::getTrustedHeaderName (Request::HEADER_FORWARDED ));
2111
+ $ this ->assertSame ('B ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_IP ));
2112
+ $ this ->assertSame ('C ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_HOST ));
2113
+ $ this ->assertSame ('D ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_PORT ));
2114
+ $ this ->assertSame ('E ' , Request::getTrustedHeaderName (Request::HEADER_CLIENT_PROTO ));
2115
+
2116
+ Request::setTrustedProxies (array ('8.8.8.8 ' ), Request::HEADER_FORWARDED );
2117
+
2118
+ $ this ->assertSame ('A ' , Request::getTrustedHeaderName (Request::HEADER_FORWARDED ));
2119
+ }
2065
2120
}
2066
2121
2067
2122
class RequestContentProxy extends Request
0 commit comments