Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9d3ae85

Browse files
[HttpKernel] Inline ValidateRequestListener logic into HttpKernel
1 parent eae78e2 commit 9d3ae85

File tree

7 files changed

+38
-128
lines changed

7 files changed

+38
-128
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,5 @@
4646
<argument type="service" id="request_stack" />
4747
<tag name="kernel.event_subscriber" />
4848
</service>
49-
50-
<service id="validate_request_listener" class="Symfony\Component\HttpKernel\EventListener\ValidateRequestListener">
51-
<tag name="kernel.event_subscriber" />
52-
</service>
5349
</services>
5450
</container>

src/Symfony/Bundle/FrameworkBundle/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"symfony/event-dispatcher": "~2.5",
2424
"symfony/finder": "~2.0,>=2.0.5",
2525
"symfony/http-foundation": "~2.4.9|~2.5,>=2.5.4",
26-
"symfony/http-kernel": "~2.7,>=2.7.15",
26+
"symfony/http-kernel": "~2.7",
2727
"symfony/filesystem": "~2.3",
2828
"symfony/routing": "~2.6,>2.6.4",
2929
"symfony/security-core": "~2.6.13|~2.7.9|~2.8",

src/Symfony/Component/HttpKernel/EventListener/ValidateRequestListener.php

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/Symfony/Component/HttpKernel/HttpKernel.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\HttpKernel;
1313

1414
use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
15+
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
1516
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
1617
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
1718
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
@@ -21,6 +22,7 @@
2122
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
2223
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
2324
use Symfony\Component\HttpKernel\Event\PostResponseEvent;
25+
use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
2426
use Symfony\Component\HttpFoundation\Request;
2527
use Symfony\Component\HttpFoundation\RequestStack;
2628
use Symfony\Component\HttpFoundation\Response;
@@ -113,6 +115,13 @@ public function terminateWithException(\Exception $exception)
113115
*/
114116
private function handleRaw(Request $request, $type = self::MASTER_REQUEST)
115117
{
118+
if (self::MASTER_REQUEST === $type && $request::getTrustedProxies()) {
119+
try {
120+
$request->getClientIps();
121+
} catch (ConflictingHeadersException $e) {
122+
throw new BadRequestHttpException('The request headers contain conflicting information regarding the origin of this request.', $e);
123+
}
124+
}
116125
$this->requestStack->push($request);
117126

118127
// request

src/Symfony/Component/HttpKernel/Tests/EventListener/ValidateRequestListenerTest.php

Lines changed: 0 additions & 66 deletions
This file was deleted.

src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,33 @@ public function testVerifyRequestStackPushPopDuringHandle()
271271
$kernel->handle($request, HttpKernelInterface::MASTER_REQUEST);
272272
}
273273

274+
/**
275+
* @expectedException Symfony\Component\HttpKernel\Exception\BadRequestHttpException
276+
*/
277+
public function testInconsistentClientIpsOnMasterRequests()
278+
{
279+
$kernel = new HttpKernel(new EventDispatcher(), $this->getResolver());
280+
$request = new Request();
281+
$request->setTrustedProxies(array('1.1.1.1'));
282+
$request->server->set('REMOTE_ADDR', '1.1.1.1');
283+
$request->headers->set('FORWARDED', '2.2.2.2');
284+
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
285+
286+
$kernel->handle($request, $kernel::MASTER_REQUEST, false);
287+
}
288+
289+
public function testInconsistentClientIpsOnSubRequests()
290+
{
291+
$kernel = new HttpKernel(new EventDispatcher(), $this->getResolver());
292+
$request = new Request();
293+
$request->setTrustedProxies(array('1.1.1.1'));
294+
$request->server->set('REMOTE_ADDR', '1.1.1.1');
295+
$request->headers->set('FORWARDED', '2.2.2.2');
296+
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
297+
298+
$this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $kernel->handle($request, $kernel::SUB_REQUEST, false));
299+
}
300+
274301
protected function getResolver($controller = null)
275302
{
276303
if (null === $controller) {

src/Symfony/Component/HttpKernel/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=5.3.9",
2020
"symfony/event-dispatcher": "~2.6,>=2.6.7",
21-
"symfony/http-foundation": "~2.7,>=2.7.15",
21+
"symfony/http-foundation": "~2.7.15|~2.8.8",
2222
"symfony/debug": "~2.6,>=2.6.2",
2323
"psr/log": "~1.0"
2424
},

0 commit comments

Comments
 (0)