Commit Graph

119 Commits

Author SHA1 Message Date
Eugene Wissner
75aa6f68f8 Fix undefined array $server 2015-11-18 11:13:04 +01:00
Fabien Potencier
1e0af36c7d removed all @covers annotations 2015-11-01 14:17:24 -08:00
Nicolas Grekas
4061d37e87 [tests] Use @requires annotation when possible 2015-10-10 10:57:40 +02:00
Fabien Potencier
cbe6bc9ac4 fixed CS 2015-08-24 08:32:52 +02:00
Kévin Dunglas
059964daf3 [HttpFoundation] [PSR-7] Allow to use resources as content body and to return resources from string content 2015-07-16 13:31:59 +02:00
Dariusz Ruminski
464b67ed09 fix CS 2015-07-05 16:01:47 +02:00
Kévin Dunglas
9f9b0f73aa [HttpFoundation] Get response content as resource several times for PHP >= 5.6 2015-06-05 22:09:27 +02:00
Fabien Potencier
905bbbdd90 bug #14335 [HttpFoundation] Fix baseUrl when script filename is contained in pathInfo (danez)
This PR was squashed before being merged into the 2.3 branch (closes #14335).

Discussion
----------

[HttpFoundation] Fix baseUrl when script filename is contained in pathInfo

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #13617
| License       | MIT
| Doc PR        |

When the script filename is just /index.php, dirname() returns '/' for it. In Request::prepareBaseUrl() we append '/' to it (as introduced in #13039), which is wrong in this scenario as the resulting string is '//'.

When we rtrim('/') the output of dirname() then '/' would be constructed in this case, and in all other cases it makes no difference as dirname() already trims the right forward slash if there are path segments.

The test-cases should clarify the exact scenario.

Commits
-------

f24a6dd [HttpFoundation] Fix baseUrl when script filename is contained in pathInfo
2015-05-20 10:53:09 +02:00
Daniel Tschinder
f24a6dd43a [HttpFoundation] Fix baseUrl when script filename is contained in pathInfo 2015-05-20 10:53:07 +02:00
Sebastian Grodzicki
6038b75eaf [HttpFoundation] Allow curly braces in trusted host patterns 2015-04-28 20:14:20 +02:00
James Gilliland
6c73f0ce93 isFromTrustedProxy to confirm request came from a trusted proxy. 2015-04-01 16:16:10 +02:00
Dariusz Ruminski
f99c22c08a CS: Convert double quotes to single quotes 2015-03-21 12:11:30 +01:00
Fabien Potencier
58fcb8d515 Revert "minor #12652 [HttpFoundation] [Hackday] #9942 test: Request::getContent() for null value (skler)"
This reverts commit 09225c7466, reversing
changes made to a0298331ad.
2015-02-05 10:45:43 +01:00
Fabien Potencier
6e9768c8b9 Revert "fixed assertion"
This reverts commit b0a4c38465.
2015-02-05 10:45:38 +01:00
Fabien Potencier
b0a4c38465 fixed assertion 2015-02-05 10:43:13 +01:00
Mauro Foti
0b9f310055 [HttpFoundation] [Hackday] #9942 test: Request::getContent() for null value 2015-02-05 10:42:22 +01:00
Fabien Potencier
b8e4b4af3d bug #13039 [HttpFoundation] [Request] fix baseUrl parsing to fix wrong path_info (rk3rn3r)
This PR was squashed before being merged into the 2.3 branch (closes #13039).

Discussion
----------

[HttpFoundation] [Request] fix baseUrl parsing to fix wrong path_info

Hi everyone!

We at trivago had an issue with the Request object. It seems that all versions of symfony 2.x and 3.x are affected from this (possible) bug (don't checked 1.x).
Here is the problem:

some old legacy pages are deployed in the Document Root, let's say /var/www/www.test.com/ .
one or more new applications based on symfony are deployed to /var/release/new_app1/ , /var/release/new_app2/ , ... .
in /var/www/www.test.com/ there is a symlink "app" to /var/release/new_app1/web, like:
/var/www/www.test.com/app --> /var/release/new_app1/web/

there is a "SEO"/human-readable rewrite rule for Document Root (if called path/file not exist): (.*) --> app/app.php

the problem comes, when the user calls a uri starting with "app" or whatever the rewrite rule / symlink points to:

the user calls "http://www.test.com/apparthotel-1234"
results in $_SERVER parameters like this
```
'DOCUMENT_ROOT' =>'/var/www/www.test.com',
'SCRIPT_FILENAME' => '/var/www/www.test.com/app/app.php',
'SCRIPT_NAME' => '/app/app.php',
'PHP_SELF' => '/app/app.php/apparthotel-1234'
```
in Request::prepareBaseUrl() there are checks to find the baseUrl:
```
        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
            // full $baseUrl matches
            return $prefix;
        }

        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, dirname($baseUrl))) {
            // directory portion of $baseUrl matches
            return rtrim($prefix, '/');
        }
```
first it is checked if (in our case) "/app/app.php" is in the request uri (/apparthotel-1234).
it's not.

then it takes the dirname (of /app/app.php) which is /app and checks if it is in the request uri (/apparthotel-1234), and YES, it is! and "/app" is returned, but this is wrong, it should be empty (because it comes from a rewrite rule from root: /)!

later in preparePathInfo(), if there is a baseUrl, then the baseUrl is removed from the request uri:
/apparthotel-1234  --->  /arthotel-1234

The cause is, the second baseUrl check, checks if the path of the application is already in the uri, like when the request was "http://www.test.com/app/apparthotel-1234" and hit a rewrite rule like (.*) --> app.php in there, but because it matches a directory it must match "dirname($baseUrl) . '/'".

I also needed to fix one unit test of the getBaseUrl test:
the request uri recently was "/foo%20bar".
but from the $_SERVER infos "foo bar" is a directory, see:
```
'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
'SCRIPT_NAME' => '/foo bar/app.php',
'PHP_SELF' => '/foo bar/app.php',
```

webservers will redirect a request "http://www.test.com/foo%20bar" to "http://www.test.com/foo%20bar/" when "foo bar" is a directory. checked this for apache 2.x and nginx 1.4.x.

this fix is for symfony master (3.0.x, see #13039).
I also prepared a merge request for actual 2.7 branch, it will also follow in some minutes. (see #13040)

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | this, #13040, #13038, #7329
| License       | MIT

[HttpFoundation] [Request]
* added missing slash to baseUrl-path part check to remove the path, only when it's also a path in the uri
[HttpFoundation] [Tests] [RequestTest]
* fixed and added unittests

This is the symfony 2.3 branch fix for the issue related to #13038 and #13040

Happy christmas!

Commits
-------

3a3ecd3 [HttpFoundation] [Request] fix baseUrl parsing to fix wrong path_info
2015-01-18 14:31:14 +01:00
rkerner
3a3ecd3353 [HttpFoundation] [Request] fix baseUrl parsing to fix wrong path_info 2015-01-18 14:31:11 +01:00
Fabien Potencier
60ad382684 [HttpFoundation] fixed error when an IP in the X-Forwarded-For HTTP header contains a port 2014-12-29 09:12:40 +01:00
Graham Campbell
eda746bad5 PSR-2 fixes 2014-12-02 19:42:47 +00:00
Disquedur
51312d31cc Remove aligned '=>' and '=' 2014-10-26 08:30:58 +01:00
Fabien Potencier
369aebf431 fixed CS 2014-09-22 10:32:35 +02:00
Fabien Potencier
0aaabbfe8b security #11828 n/a (nicolas-grekas, larowlan)
This PR was merged into the 2.3 branch.

Discussion
----------

n/a

n/a

Commits
-------

1ee96a8 Test examples from Drupal SA-CORE-2014-003
5506ee8 Fix potential DoS when parsing HOST
2014-09-03 09:37:21 +02:00
DQNEO
05f5860c56 [HttpFoundation] Improve string values in test codes 2014-09-01 13:58:07 +02:00
DQNEO
42841e845b fix comment: not fourth but sixth argument 2014-09-01 13:44:28 +02:00
Lee Rowlands
1ee96a8b1b Test examples from Drupal SA-CORE-2014-003 2014-08-22 11:57:03 +02:00
Nicolas Grekas
5506ee8f66 Fix potential DoS when parsing HOST 2014-08-22 11:56:47 +02:00
Yassine Guedidi
777666fac1 [HttpFoundation] Update QUERY_STRING when overrideGlobals 2014-07-30 12:14:11 +02:00
Keith Maika
2a0e8e39b8 [HttpFoundation] Fixed Request::getPort returns incorrect value under IPv6
Fixed issue with Request::getPort method returning an incorrect value when the HTTP_HOST header is a IPv6 address.
2014-06-17 10:14:17 -04:00
Kevin Decherf
7a75adf6f1 [HttpFoundation] Basic auth in url is broken when using PHP CGI/FPM
Request#getUser() and Request#getPassword() introduced in
aecfd0a891 do not handle the lack of
PHP_AUTH_USER and PHP_AUTH_PW in $this->server when using PHP-FPM. Use
$this->headers instead.
Furthermore, the test of empty password now expects an empty string
instead of NULL according to a450d002f2.
2014-06-10 23:31:45 +02:00
Fabien Potencier
eb3f6c6efb fixed various inconsistencies 2014-02-11 11:29:24 +01:00
Fabien Potencier
15baa81fdc fixed acronyms 2013-12-28 09:33:14 +01:00
Fabien Potencier
e0b751a2d8 Merge branch '2.2' into 2.3
* 2.2:
  fixed some typos
  fixed @expectedException class names

Conflicts:
	src/Symfony/Component/Config/Tests/Definition/ArrayNodeTest.php
	src/Symfony/Component/Console/Tests/Command/CommandTest.php
	src/Symfony/Component/Locale/Tests/Stub/StubLocaleTest.php
	src/Symfony/Component/Locale/Tests/Stub/StubNumberFormatterTest.php
2013-11-25 15:49:41 +01:00
Fabien Potencier
5c6edb3685 fixed some typos 2013-11-25 11:21:43 +01:00
Fabien Potencier
8d69bb5886 fixed @expectedException class names 2013-11-25 09:44:14 +01:00
Fabien Potencier
bc256f9da4 Merge branch '2.2' into 2.3
* 2.2:
  fixed Client when using the terminable event
  Fix problem with Windows file links (backslash in JavaScript string)
  [Security] fixed wrong phpdoc
  [Routing] removed extra argument
  [HttpFoundation] Header `HTTP_X_FORWARDED_PROTO` can contain various values Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows value chaining (`https, http`, where `https` is always first when request is encrypted).
  Added doc comments

Conflicts:
	src/Symfony/Component/HttpFoundation/Request.php
2013-09-29 21:41:41 +02:00
Joseph Bielawski
d997443ab0 [HttpFoundation] Header HTTP_X_FORWARDED_PROTO can contain various values
Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows
value chaining (`https, http`, where `https` is always first when request is encrypted).
2013-09-23 10:18:01 +02:00
Fabien Potencier
d1825030b4 Merge branch '2.2' into 2.3
* 2.2:
  fixes RequestDataCollector bug, visible when used on Drupal8
  [Console] fixed exception rendering when nested styles
  [Console] added some more information about OutputFormatter::replaceStyle()
  [Console] fixed the formatter for single-char tags
  [Console] Escape exception message during the rendering of an exception
  [BrowserKit] Fixed the handling of parameters when redirecting
  Typo fix
  HttpFoundation RequestTest - Fixed indentation and removed comments
  HttpFoundation Request test for #8619
  LICENSE files moved to meta folders
  added missing method in the UPGRADE file for 2.2 (closes #8941)
  [Translation] Removed an unneeded return annotation.
  [DomCrawler] Added missing docblocks and removed unneeded return annotation.

Conflicts:
	src/Symfony/Component/BrowserKit/Client.php
	src/Symfony/Component/DomCrawler/Crawler.php
2013-09-18 09:03:56 +02:00
fturmel
32fc4d8758 HttpFoundation RequestTest - Fixed indentation and removed comments 2013-09-16 10:00:14 +02:00
fturmel
48582402c0 HttpFoundation Request test for #8619 2013-09-16 10:00:13 +02:00
Fabien Potencier
8899e31a88 Merge branch '2.2' into 2.3
* 2.2:
  [HttpFoundation] removed double-slashes (closes #8388)
  [HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create()
  [TwigBridge] fixed form rendering when used in a template with dynamic inheritance
2013-09-12 22:07:23 +02:00
Fabien Potencier
4f5b8f04f1 [HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create() 2013-09-12 20:10:57 +02:00
Fabien Potencier
5ca19ee433 Merge branch '2.2' into 2.3
* 2.2:
  [HttpFoundation] fixed some unit tests
2013-09-10 23:20:57 +02:00
Fabien Potencier
6ec2cbaa6c [HttpFoundation] fixed some unit tests 2013-09-10 23:20:45 +02:00
Fabien Potencier
7f0caff162 Merge branch '2.2' into 2.3
* 2.2:
  [HttpFoundation] fixed format duplication in Request
2013-09-10 22:45:04 +02:00
Fabien Potencier
8c2a733528 [HttpFoundation] fixed format duplication in Request 2013-09-10 22:37:04 +02:00
Fabien Potencier
3689849e8b Merge branch '2.2' into 2.3 (closes #8955)
* 2.2:
  [HttpFoundation] removed extra parenthesis
  [Process][2.2] Fix Process component on windows
  [HttpFoundation] improve perf of previous merge (refs #8882)
  Request->getPort() should prefer HTTP_HOST over SERVER_PORT
  Fixing broken http auth digest in some circumstances (php-fpm + apache).
  fixed typo

Conflicts:
	src/Symfony/Component/Process/Process.php
2013-09-07 18:30:19 +02:00
Dennis Hotson
65814bae27 Request->getPort() should prefer HTTP_HOST over SERVER_PORT 2013-09-07 08:11:05 +02:00
Jordi Boggiano
fd2f63382a Include untrusted host in the exception message 2013-08-21 12:06:02 +02:00
Fabien Potencier
f8ffb80067 Merge branch '2.2' into 2.3
* 2.2:
  added trusted hosts check

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
2013-08-07 16:02:06 +02:00