Commit graph

243 commits

Author SHA1 Message Date
Aaron Schulz
382ed18a64 Detect invalid IPs in XFFs and give a more useful error message
* This will only error out if we are stuck with a CDN or site proxy IP

Bug: 54288

Change-Id: Ib81e06527c2f7a8d9c288b56c0f46610a4517f74
2013-09-19 23:05:27 +00:00
Chad Horohoe
9c57e5f5f5 Protect against non-arrays when fetching headers
PHP documentation says this can theoretically return false on failure.

HHVM actually returns null when running from the command line, so
this does protect against that.

Change-Id: I0d75b8ed209128a9667ce1e7189597ae9ebc8af6
2013-09-17 10:38:14 -07:00
Max Semenik
cfc0770ad0 Normalize IPv6 addresses in XFF chains
Otherwise, we're at proxy's mercy for using the same form of IPs.

Change-Id: I090947958bf699ee6d8a9009c9e4a6d11da23f2c
2013-08-30 00:55:38 +04:00
csteipp
8ef4572700 Add methods to get raw request in WebRequest
Make it possible to get the raw parameters given to the request, with
no escaping. This is needed for features like OAuth, where a signature
is calculated over the parameters to verify their integrity and source.

FauxRequest is extended so the original request doesn't pollute the
fake one. This could be extended so "raw" values could be set and used,
but there isn't a use case for that yet, so it's not done here.

Change-Id: I8710844f21d21cbbf28517b0cc25b0713b506bee
2013-07-29 16:52:17 +00:00
jenkins-bot
00073f299b Merge "Make headers in FauxRequest case insensitive" 2013-06-03 15:06:43 +00:00
daniel
1da2dd7983 Make headers in FauxRequest case insensitive
HTTP headers are case insensitive per spec, and WebRequest
treats them like that, so FauxRequest should too.

Change-Id: I4257af7a8de2792ac556c670dcc7f28e4af4cb44
2013-06-03 16:23:11 +02:00
Aaron Schulz
8bd6922ab0 WebRequest::getIP() cleanups.
* Always treat the first XFF IP from cache proxies as sane
  even if it is a private IP (useful for things like labs wmf).
* Make sure IP::canonicalize() gets called if the IP is selected
  from the XFF chain (this matches getRawIP()).
* Altered and expanded unit tests.

bug: 48919
Change-Id: I350aca72c7a96ba3ec727324800612fc84e0e7a4
2013-05-30 18:24:43 +00:00
Tim Starling
196865004d Remove taint support
Venema's taint feature was apparently never publicised beyond the
php-dev mailing list, and now there is a PECL taint extension which is
incompatible with the interface assumed here.

Grep confirms that wfArrayMap() is not used in any extensions.

Change-Id: I17d8d302947443262474c608829c7c7504bef589
2013-05-06 17:39:07 +10:00
umherirrender
ef2f507d23 Fixed spacing in files direct in includes folder
Added spaces before if, foreach
Added some braces for one line statements

Change-Id: Ibb8dd102db045522d12ff939075ba7420d95ab6b
2013-04-21 06:38:49 +00:00
Kevin Israel
516fcfe0ca WebRequest::getRequestURL: Follow up Ibe00a6b8
* Only match consecutive slashes at the beginning of the URL, where
  they are actually a problem.
* Fix bug 46607 in cases where the server provides an absolute URL.

Change-Id: Ibe00a6b8722786170d09b846c1c4054b73da3d9e
2013-03-29 13:28:35 -04:00
Siebrand Mazeland
075dc3f57d Prevent PHP notice by adding isset() check
Issue was caused by change
I34c3fc9d8f9467e83cd201cb099c2d26f3a39b36

Bug: 46627
Change-Id: Ida87efc622e9e90b835473f069559817565eafc1
2013-03-28 08:42:51 +00:00
MarkAHershberger
5a266de0a4 Handle protocol-relative URLs in WebRequest::getRequestURL.
Multiple slashes at the start of the request url will look like a
protocol-relative url, so strip the extra slashes.

Bug: 46607
Change-Id: I34c3fc9d8f9467e83cd201cb099c2d26f3a39b36
2013-03-27 17:55:58 +00:00
umherirrender
6c278b6d7e fix some spacing
* Removed spaces around array index
* Removed double spaces or added spaces to begin or end of function
  calls, method signature, conditions or foreachs
* Added braces to one-line ifs
* Changed multi line conditions to one line conditions
* Realigned some arrays

Change-Id: Ia04d2a99d663b07101013c2d53b3b2e872fd9cc3
2013-03-25 22:22:46 +00:00
Aaron Schulz
f31a0463aa Fixed importScopedSession() and moved exportUserSession() to RequestContext.
* Renamed WebRequest::exportUserSession -> RequestContext::exportSession.
  Updated the only callers of this new function.
* Init the user with User::newFromId() instead of relying on the session
  (which breaks when things like CentralAuth are enabled).
* Made RequestContext::exportSession() include the user ID.
* Removed now-redundant user ID checks in upload jobs.
* Added unit tests for the session import function.

Change-Id: I543e6766f7a8a828ea5d270328c3bc7738c6fe94
2013-03-15 12:49:54 -07:00
Yuri Astrakhan
9506e3d812 Spellchecked /includes directory
* Ran spell-checker over code comments in /includes/
* A few spellchecking fixes for wfDebug() calls

Found one very strange (NOOP?) line in Linker.php - see "TODO: BUG?"

Change-Id: Ibb86b51073b980eda9ecce2cf0b8dd33f058adbf
2013-03-13 03:42:41 -04:00
Tyler Anthony Romeo
4dcc7961df Fixed @param tags to conform with Doxygen format.
Doxygen expects parameter types to come before the
parameter name in @param tags. Used a quick regex
to switch everything around where possible. This
only fixes cases where a primitve variable (or a
primitive followed by other types) is the variable
type. Other cases will need to be fixed manually.

Change-Id: Ic59fd20856eb0489d70f3469a56ebce0efb3db13
2013-03-11 13:15:01 -04:00
Reedy
c3e4057e06 Kill off numerous unused variables
Change-Id: I7039f1328f37ee669b694f73ee282602186bffd1
2013-03-08 02:36:24 +00:00
umherirrender
de7380b56e Change intval( User::getOption() ) to User::getIntOption()
Also changed some getOption with int or bool cast

Change-Id: Ia551a50e9de047c62be84065481fdf8c02e2ef96
2013-03-04 14:08:48 +00:00
Aaron Schulz
fbf34d84ab [Upload] Moved async upload stuff to the job queue.
* (bug 44080) Also carry-over the IP and HTTP header info.
* This adds a RequestContext::importScopedSession() function.

Change-Id: Ie9c0a4d78fb719569c8149b9cc8a5430f0ac5673
2013-02-15 15:00:35 -08:00
umherirrender
ca31ebad3f fix some spacing
Added/removed spaces after opening/before closing parentheses

Added a space after a comma

Removed unneeded parentheses in condition

Change-Id: I306091347ccaaf11dee0cdfda3019cb0c12be51b
2013-02-09 23:03:53 +01:00
umherirrender
1044b0b8df fix some spacing
Change-Id: I8f976013f33c5818e4402604fe8610aa3f43b0c6
2013-02-04 20:18:33 +00:00
Alex Monk
c2c982c4e8 (bug 36537) Rename calls to wfArrayToCGI to wfArrayToCgi
Done with this command:
grep wfArrayToCGI * -R -l -Z | xargs -0 -l sed -i -e 's/wfArrayToCGI/wfArrayToCgi/g' && git checkout -- HISTORY

Change-Id: If7f4d4bfc199289c11c43cf519c2415a1aad1c51
2013-01-28 18:04:20 +00:00
umherirrender
9d6575af15 The static declaration must come after the visibility declaration
From phpcs

Change-Id: Ieab0207f965630eda113abdc0259aa2eddcf5ca7
2013-01-26 21:03:52 +01:00
Niklas Laxström
833f87a037 (bug 44010) FauxRequest leaks cookie data from primary request
Change-Id: I6baf972352fd69660c09a5d413ff55b81aa31305
2013-01-16 09:45:36 +00:00
awjrichards
b786347996 Makes WebRequest::detectProtocolAndStdPort() take HTTP_X_FORWARDED_PROTO headers into account
Change-Id: I4debf1460b6357962fc634f781416929bcca2d76
2013-01-03 15:46:34 -08:00
IAlex
3b0f9bfe28 Merge "Tidy up some unbalanced returns in methods" 2012-12-09 09:48:40 +00:00
Reedy
d537d96868 Add numerous missing @throws to method documentation
Change-Id: Iba868e82a75fef7c7d011bc5be192bf059d037c0
2012-12-09 03:09:48 +00:00
Reedy
d0a242abb4 Tidy up some unbalanced returns in methods
Leave a TODO

Change-Id: Ic49ac8630650b341aafb3c17abd22f3a07805d27
2012-12-09 02:59:04 +00:00
umherirrender
e5f5e95137 Fix indentation whitespace errors
Change-Id: Ie268bee2098c589c050e1b5b0e93fe1b3feca86f
2012-10-26 17:42:13 +02:00
Aaron Schulz
5e2ac408f8 Merge "(bug 26585) Detect CSV/array values in $_SERVER['REMOTE_ADDR']." 2012-10-23 21:18:21 +00:00
Tyler Anthony Romeo
c4ed43cf6b (bug 26585) Detect CSV/array values in $_SERVER['REMOTE_ADDR'].
Changed WebRequest::getRawIP to check for values of
$_SERVER['REMOTE_ADDR'] that are either an array
or a comma separated list of IP addresses, and throw
an exception.

Original patch by Ilmari Karonen. Adapted from original
patch to work with newer MediaWiki version.

Change-Id: I4b3c56adf46b336c5032db3f2a1e621c873f0d83
2012-10-23 17:14:33 -04:00
umherirrender
85d8ee1f87 Remove a bunch of trailing spaces and unneeded newlines
Change-Id: I00f369641320acd7f087427ef031f3ee7efa0997
2012-10-10 20:14:40 +02:00
Siebrand Mazeland
d4b046a893 Update docs for return and exception info
* Removed some inline tabs in the process.
* IDE fixed some incorrect leading spaces, too.

Change-Id: Ic9303eff6db4424ac3f1fa2816839692b43e6190
2012-10-09 09:41:58 +00:00
Alexandre Emsenhuber
53b3c82fd7 Added WebRequest::getMethod() to get the HTTP method of the request.
This is to replace the usage of $_SERVER['REQUEST_METHOD'].

Change-Id: I45084254c5452b00b0665df78628cfd214e39cab
2012-08-07 18:28:43 +02:00
Alexandre Emsenhuber
737ccd82c6 In WebRequest, don't use isset() to check that a variable is null
Change-Id: If4577b911e774e1e0c6a1d90c585bbb027d6b7cd
2012-08-06 13:02:34 +02:00
Reedy
c61744b0d8 Suppress warnings around parse_url call
From the docs:
On seriously malformed URLs, parse_url may return false and emit a E_WARNING

We're already checking for false, but we can get spammed with E_WARNING..

Change-Id: I44a9ef2b163e64113bd2a30b081c1256ffeada1e
2012-07-28 19:50:34 +01:00
Antoine Musso
aab43dd495 escape tags and entity in doxygen comments
When inserting XML elements inline <such as this one>, doxygen chokes
about it not being known. Simply enclosing the tag in double quotes
prevents doxygen from emitting a warning.

Also enclosed a few invalid functions calls such as \. and double quoted
the HTML entities such as &foobar;

Change-Id: I4019637145e683c2bec3d17b2fd98b0c50a932f1
2012-07-10 17:08:32 +02:00
awjrichards
c29fd59775 Big oops - merged to wrong branch.
Revert "Revert to arbitrarily old point before initial remote branch creation to help clean up"

This reverts commit ee0d3d330f
2012-06-05 22:58:54 +00:00
awjrichards
ee0d3d330f Revert to arbitrarily old point before initial remote branch creation to help clean up
Change-Id: I41a3d1e55d3ea9dffa42451237fe065f9334361d
2012-06-02 08:43:04 -07:00
Platonides
1ea18dfaf2 Minor changes to Ic50d01f5 Accept-Language code.
Minor improvments to commit 894c5c1

Change-Id: I8cc63cb1ba2c3aa74ca9e225022d5be75e75ad23
2012-05-29 20:38:48 +02:00
Liangent
894c5c108d Tweak Accept-Language sorting method to respect RFC 3282.
Now in Accept-Language handling (in the language converter),
languages appearing earlier in the list are treated as more
preferred languages (variants).

Change-Id: Ic50d01f52dce1ae1f4f4e747d5f8b8399ca03b0b
2012-05-28 19:03:19 +08:00
Max Semenik
40e35d5b32 Deprecate WebRequest::escapeAppendQuery()
It is an ugly piece of UI-related code in an infrastructure class.
Its only user, MobileFrontend, is currently in process of getting rid of it.

Patchset 2: Fixed commit message

Change-Id: I62f9f707532a95be01c1ecdcb1fbfbd0c4117be6
2012-04-25 12:09:01 +04:00
Reedy
8f9563ce7b A set method doesn't need to return anything (and besides, niether does $this->base->setSessionData())
Change-Id: I1315697ee2879898b033c1dd01fecb809c4fe0dd
2012-04-07 17:21:16 +01:00
Daniel Friesen
9d83797631 Separate $wgArticlePath from $wgUsePathInfo.
- $wgUsePathInfo is now only used on servers not passing REQUEST_URI to determine if PATH_INFO should be used
- WebRequest now extracts information from REQUEST_URI even when $wgUsePathInfo is false
- HTMLForm bases it's decision on whether or not to include a hidden 'title' input on whether $wgArticlePath uses a query instead of assuming that $wgUsePathInfo was used to set the article path

Change-Id: I1b461fef88b26d045f4edd7553b59255c5e595d8
2012-03-24 03:44:08 -07:00
Benny Situ
586285e1f3 followup to -r113545 - add null for missing $default param 2012-03-10 00:31:54 +00:00
Roan Kattouw
f5f30aa959 (bug 34521) Returning to the previous page after logging in loses any array-valued parameters in the query string. This happens because WebRequest::getValues() calls getVal() which strips arrays, even though the doc comment says that no transformation is applied. Changed getValues() to call getGPCVal() instead. The only difference is that arrays are no longer stripped, so the doc comment is no longer a lie 2012-03-09 23:27:28 +00:00
Niklas Laxström
7476c290d3 Hrrrmp *grumbles* 2012-03-01 13:38:49 +00:00
Arthur Richards
1c242d9690 Added unsetVal() method as antithesis to setVal() 2012-02-29 21:56:05 +00:00
Sam Reed
c052fc3b7b Documentation followups from lastnight 2012-02-10 15:37:33 +00:00
Sam Reed
0a626db6e1 Fixing some of the "@return true" or "@return false", need to be "@return bool" and then the metadata can say true if foo, false if bar
Other documentation improvements
2012-02-09 19:29:36 +00:00