@@ -520,20 +520,26 @@ public function overrideGlobals(): void
520
520
*
521
521
* You should only list the reverse proxies that you manage directly.
522
522
*
523
- * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
524
- * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
523
+ * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
524
+ * @param int-mask-of<Request::HEADER_*> $trustedHeaderSet A bit field to set which headers to trust from your proxies
525
525
*/
526
526
public static function setTrustedProxies (array $ proxies , int $ trustedHeaderSet ): void
527
527
{
528
- self ::$ trustedProxies = array_reduce ($ proxies , function ($ proxies , $ proxy ) {
529
- if ('REMOTE_ADDR ' !== $ proxy ) {
530
- $ proxies [] = $ proxy ;
531
- } elseif (isset ($ _SERVER ['REMOTE_ADDR ' ])) {
532
- $ proxies [] = $ _SERVER ['REMOTE_ADDR ' ];
528
+ if (false !== $ i = array_search ('REMOTE_ADDR ' , $ proxies , true )) {
529
+ if (isset ($ _SERVER ['REMOTE_ADDR ' ])) {
530
+ $ proxies [$ i ] = $ _SERVER ['REMOTE_ADDR ' ];
531
+ } else {
532
+ unset($ proxies [$ i ]);
533
+ $ proxies = array_values ($ proxies );
533
534
}
535
+ }
536
+
537
+ if (false !== $ i = array_search ('PRIVATE_SUBNETS ' , $ proxies , true )) {
538
+ unset($ proxies [$ i ]);
539
+ $ proxies = array_merge ($ proxies , IpUtils::PRIVATE_SUBNETS );
540
+ }
534
541
535
- return $ proxies ;
536
- }, []);
542
+ self ::$ trustedProxies = $ proxies ;
537
543
self ::$ trustedHeaderSet = $ trustedHeaderSet ;
538
544
}
539
545
0 commit comments