Skip to content

Commit eef742d

Browse files
committed
[Security] Fix HttpUtils::createRequest() when the base request is forwarded
1 parent 878667b commit eef742d

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

HttpUtils.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,13 @@ public function createRedirectResponse(Request $request, string $path, int $stat
7070
*/
7171
public function createRequest(Request $request, string $path): Request
7272
{
73+
if ($trustedProxies = Request::getTrustedProxies()) {
74+
Request::setTrustedProxies([], Request::getTrustedHeaderSet());
75+
}
7376
$newRequest = Request::create($this->generateUri($request, $path), 'get', [], $request->cookies->all(), [], $request->server->all());
77+
if ($trustedProxies) {
78+
Request::setTrustedProxies($trustedProxies, Request::getTrustedHeaderSet());
79+
}
7480

7581
static $setSession;
7682

Tests/HttpUtilsTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,16 @@ public static function provideSecurityRequestAttributes()
233233
];
234234
}
235235

236+
public function testCreateRequestHandlesTrustedHeaders()
237+
{
238+
Request::setTrustedProxies(['127.0.0.1'], Request::HEADER_X_FORWARDED_PREFIX);
239+
240+
$this->assertSame(
241+
'http://localhost/foo/',
242+
(new HttpUtils())->createRequest(Request::create('/', server: ['HTTP_X_FORWARDED_PREFIX' => '/foo']), '/')->getUri(),
243+
);
244+
}
245+
236246
public function testCheckRequestPath()
237247
{
238248
$utils = new HttpUtils($this->getUrlGenerator());

0 commit comments

Comments
 (0)