This repository has been archived by the owner on May 24, 2024. It is now read-only.
Update dependency guzzlehttp/guzzle to v6 [SECURITY] - autoclosed #15
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
~4.0
->~6.0
GitHub Vulnerability Alerts
CVE-2016-5385
PHP through 7.0.8 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and therefore does not protect applications from the presence of untrusted client data in the HTTP_PROXY environment variable, which might allow remote attackers to redirect an application's outbound HTTP traffic to an arbitrary proxy server via a crafted Proxy header in an HTTP request, as demonstrated by (1) an application that makes a getenv('HTTP_PROXY') call or (2) a CGI configuration of PHP, aka an "httpoxy" issue.
CVE-2022-29248
Impact
Previous version of Guzzle contain a vulnerability with the cookie middleware. The vulnerability is that it is not checked if the cookie domain equals the domain of the server which sets the cookie via the
Set-Cookie
header, allowing a malicious server to set cookies for unrelated domains. For example an attacker atwww.example.com
might set a session cookie forapi.example.net
, logging the Guzzle client into their account and retrieving private API requests from the security log of their account.Note that our cookie middleware is disabled by default, so most library consumers will not be affected by this issue. Only those who manually add the cookie middleware to the handler stack or construct the client with
['cookies' => true]
are affected. Moreover, those who do not use the same Guzzle client to call multiple domains and have disabled redirect forwarding are not affected by this vulnerability.Patches
Affected Guzzle 7 users should upgrade to Guzzle 7.4.3 as soon as possible. Affected users using any earlier series of Guzzle should upgrade to Guzzle 6.5.6 or 7.4.3.
Workarounds
If you do not need support for cookies, turn off the cookie middleware. It is already off by default, but if you have turned it on and no longer need it, turn it off.
References
For more information
If you have any questions or comments about this advisory, please get in touch with us in
#guzzle
on the PHP HTTP Slack. Do not report additional security advisories in that public channel, however - please follow our vulnerability reporting process.CVE-2022-31042
Impact
Cookie
headers on requests are sensitive information. On making a request using thehttps
scheme to a server which responds with a redirect to a URI with thehttp
scheme, or on making a request to a server which responds with a redirect to a a URI to a different host, we should not forward theCookie
header on. Prior to this fix, only cookies that were managed by our cookie middleware would be safely removed, and anyCookie
header manually added to the initial request would not be stripped. We now always strip it, and allow the cookie middleware to re-add any cookies that it deems should be there.Patches
Affected Guzzle 7 users should upgrade to Guzzle 7.4.4 as soon as possible. Affected users using any earlier series of Guzzle should upgrade to Guzzle 6.5.7 or 7.4.4.
Workarounds
An alternative approach would be to use your own redirect middleware, rather than ours, if you are unable to upgrade. If you do not require or expect redirects to be followed, one should simply disable redirects all together.
References
For more information
If you have any questions or comments about this advisory, please get in touch with us in
#guzzle
on the PHP HTTP Slack. Do not report additional security advisories in that public channel, however - please follow our vulnerability reporting process.CVE-2022-31043
Impact
Authorization
headers on requests are sensitive information. On making a request using thehttps
scheme to a server which responds with a redirect to a URI with thehttp
scheme, we should not forward theAuthorization
header on. This is much the same as to how we don't forward on the header if the host changes. Prior to this fix,https
tohttp
downgrades did not result in theAuthorization
header being removed, only changes to the host.Patches
Affected Guzzle 7 users should upgrade to Guzzle 7.4.4 as soon as possible. Affected users using any earlier series of Guzzle should upgrade to Guzzle 6.5.7 or 7.4.4.
Workarounds
An alternative approach would be to use your own redirect middleware, rather than ours, if you are unable to upgrade. If you do not require or expect redirects to be followed, one should simply disable redirects all together.
References
For more information
If you have any questions or comments about this advisory, please get in touch with us in
#guzzle
on the PHP HTTP Slack. Do not report additional security advisories in that public channel, however - please follow our vulnerability reporting process.CVE-2022-31090
Impact
Authorization
headers on requests are sensitive information. When using our Curl handler, it is possible to use theCURLOPT_HTTPAUTH
option to specify anAuthorization
header. On making a request which responds with a redirect to a URI with a different origin, if we choose to follow it, we should remove theCURLOPT_HTTPAUTH
andCURLOPT_USERPWD
options before continuing, stopping curl from appending theAuthorization
header to the new request. Previously, we would only consider a change in host. Now, we consider any change in host, port or scheme to be a change in origin.Patches
Affected Guzzle 7 users should upgrade to Guzzle 7.4.5 as soon as possible. Affected users using any earlier series of Guzzle should upgrade to Guzzle 6.5.8 or 7.4.5. Note that a partial fix was implemented in Guzzle 7.4.2, where a change in host would trigger removal of the curl-added Authorization header, however this earlier fix did not cover change in scheme or change in port.
Workarounds
If you do not require or expect redirects to be followed, one should simply disable redirects all together. Alternatively, one can specify to use the Guzzle stream handler backend, rather than curl.
References
For more information
If you have any questions or comments about this advisory, please get in touch with us in
#guzzle
on the PHP HTTP Slack. Do not report additional security advisories in that public channel, however - please follow our vulnerability reporting process.CVE-2022-31091
Impact
Authorization
andCookie
headers on requests are sensitive information. On making a request which responds with a redirect to a URI with a different port, if we choose to follow it, we should remove theAuthorization
andCookie
headers from the request, before containing. Previously, we would only consider a change in host or scheme downgrade. Now, we consider any change in host, port or scheme to be a change in origin.Patches
Affected Guzzle 7 users should upgrade to Guzzle 7.4.5 as soon as possible. Affected users using any earlier series of Guzzle should upgrade to Guzzle 6.5.8 or 7.4.5.
Workarounds
An alternative approach would be to use your own redirect middleware, rather than ours, if you are unable to upgrade. If you do not require or expect redirects to be followed, one should simply disable redirects all together.
References
For more information
If you have any questions or comments about this advisory, please get in touch with us in
#guzzle
on the PHP HTTP Slack. Do not report additional security advisories in that public channel, however please follow our vulnerability reporting process.Release Notes
guzzle/guzzle (guzzlehttp/guzzle)
v6.5.8
Compare Source
See change log for changes.
v6.5.7
Compare Source
See change log for changes.
v6.5.6
Compare Source
See change log for changes.
v6.5.5
Compare Source
v6.5.4
Compare Source
v6.5.3
Compare Source
v6.5.2
Compare Source
v6.5.1
Compare Source
v6.5.0
Compare Source
curl_multi_init
. #2287null
to theheader
option. #2132RetryMiddleware
did not do exponential delay between retires due unit mismatch. #2132ClientInterface::VERSION
v6.4.1
Compare Source
guzzle.phar
was created in 6.4.0 due expired API token. This release will fix thatparent::__construct()
toFileCookieJar
andSessionCookieJar
v6.4.0
Compare Source
RequestException::getResponseBodySummary()
#2081GuzzleHttp\Exception\InvalidArgumentException
#2163GuzzleHttp\_current_time()
to usehrtime()
if that function exists. #2242appconnect_time
inTransferStats
#2284CookieJar
#2335MockHandler
so we can test transfer time #2362v6.3.3
Compare Source
v6.3.2
Compare Source
v6.3.1
Compare Source
v6.3.0
Compare Source
on_headers
option in MockHandler #1580read_timeout
option #1611CURLOPT_CAPATH
andCURLOPT_CAINFO
properly #1684\GuzzleHttp\Promise\rejection_for
function instead of object init #1827v6.2.3
Compare Source
v6.2.2
Compare Source
v6.2.1
Compare Source
https://httpoxy.org/
https://github.com/guzzle/guzzle/pull/14881488
Content-Length
in PHP StreamHandler to avoid timeouts whena server does not honor
Connection: close
.v6.2.0
Compare Source
GuzzleHttp\json_encode
andGuzzleHttp\json_decode
.https://github.com/guzzle/guzzle/pull/13891389
https://github.com/guzzle/guzzle/pull/13241324
https://github.com/guzzle/guzzle/pull/13731373
https://github.com/guzzle/guzzle/pull/13771377
https://github.com/guzzle/guzzle/pull/14061406
https://github.com/guzzle/guzzle/pull/14091409
https://github.com/guzzle/guzzle/pull/14221422
http_build_query
for HHVM workaround.https://github.com/guzzle/guzzle/pull/13671367
v6.1.1
Compare Source
guzzle/guzzle@911bcbc
guzzle/guzzle@f210294
verificatihttps://github.com/guzzle/guzzle/issues/12561256
contehttps://github.com/guzzle/guzzle/pull/12821282
https://github.com/guzzle/guzzle/pull/12871287
sink
.https://github.com/guzzle/guzzle/pull/12921292
v6.1.0
Compare Source
on_stats
request option to provide access to transferstatistics for requeshttps://github.com/guzzle/guzzle/pull/12021202
https://github.com/guzzle/guzzle/pull/11951195
https://github.com/guzzle/guzzle/pull/12161216
a simple set of rulhttps://github.com/guzzle/guzzle/pull/11971197
https://github.com/guzzle/guzzle/pull/12371237
=
inside of quotes in Cookies.https://github.com/guzzle/guzzle/pull/12321232
same nahttps://github.com/guzzle/guzzle/pull/12211221
multipart bohttps://github.com/guzzle/guzzle/pull/12181218
cURL handlhttps://github.com/guzzle/guzzle/pull/11871187
header changhttps://github.com/guzzle/guzzle/pull/12071207
https://github.com/guzzle/guzzle/issues/11291129
body_as_string
settinghttps://github.com/guzzle/guzzle/pull/12011201
https://github.com/guzzle/guzzle/issues/11721172
form_params
andquery
now always uses the&
separator.https://github.com/guzzle/guzzle/pull/11631163
https://github.com/guzzle/guzzle/pull/11891189
v6.0.2
Compare Source
were not being removed by
curl_reset
.their state if the encoding was automatically removed by a handler. This
means that the
Content-Encoding
header may be removed an theContent-Length
modified to reflect the message size after removing theencoding.
form_params
andmultipart
in the same request.indirection to help with global Composer installations.
v6.0.1
Compare Source
query
request option where the&
separator was missing.
body
is provided as an array. Pleaseuse
form_params
ormultipart
instead.v6.0.0
Compare Source
multipart
andform_params
request options.synchronous
request option.on_headers
request option.expect
handling.present on the provided handler in order to work.
CurlMultiHandler. This prevents unexpected recursion from requests completing
while ticking the cURL loop.
default
totrue
. This is no longerrequired now that the cURL loop is not ticked for async requests.
sink
is valid if saving to a file.specific contextual information.
GuzzleHttp\RequestOptions
to allow request options to be appliedusing constants.
$maxHandles
has been removed from CurlMultiHandler.MultipartPostBody
is now part of theguzzlehttp/psr7
package.v5.3.4
Compare Source
v5.3.3
Compare Source
v5.3.2
Compare Source
v5.3.1
Compare Source
v5.3.0
Compare Source
save_to
AbstractRequestEvent::getTransaction()
as public.previous headers in the associative array.
Utils::getDefaultHandler()
GuzzleHttp\Client::getDefaultUserAgent
as deprecated.v5.2.0
Compare Source
AppliesHeadersInterface
to make applying headers to a request basedon the body more generic and not specific to
PostBodyInterface
.RingBridge.
v5.1.0
Compare Source
https://github.com/guzzle/guzzle/pull/943/943.
null
when creating a request with a client willensure that the option is not set. This allows you to overwrite default
request options on a per-request bashttps://github.com/guzzle/guzzle/pull/937zle/pull/937.
specifying a
protocols
array in theallow_redirects
request option.responses. https://github.com/guzzle/guzzle/pull/947/947.
"0"
is now an allowed URI path. Seehttps://github.com/guzzle/guzzle/pull/935/935.
Query
no longer typehints on the$query
argument in the constructor,allowing for strings and arrays.
end
event are now correctly wrapped with Guzzlespecific exceptions if necessary.
v5.0.3
Compare Source
This change updates query strings so that they are treated as un-encoded values
by default where the value represents an un-encoded value to send over the
wire. A Query object then encodes the value before sending over the wire. This
means that even value query string values (e.g., ":") are url encoded. This
makes the Query class match PHP's http_build_query function. However, if you
want to send requests over the wire using valid query string characters that do
not need to be encoded, then you can provide a string to Url::setQuery() and
pass true as the second argument to specify that the query string is a raw
string that should not be parsed or encoded (unless a call to getQuery() is
subsequently made, forcing the query-string to be converted into a Query
object).
v5.0.2
Compare Source
Added a trailing
\r\n
to multipart/form-data payloads. Seehttps://github.com/guzzle/guzzle/pull/871/871
Added a
GuzzleHttp\Pool::send()
convenience method to match the docs.Status codes are now returned as integers. See
https://github.com/guzzle/guzzle/issues/881/881
No longer overwriting an existing
application/x-www-form-urlencoded
headerwhen sending POST requests, allowing for customized headers. https://github.com/guzzle/guzzle/issues/877sues/877
Improved path URL serialization.
they are already encoded.
encoding ' ' and '?'.
default unless the
rawString
argument is provided when setting the querystring on a URL: Now allowing many more characters to be present in the
query string without being percent encoded. See
https://datatracker.ietf.org/doc/html/rfc3986#appendix-A
v5.0.1
Compare Source
Bugfix release.
error and end events event though the response is unusable. This has been
corrected so that a response is not returned in the
getResponse
method ofthese events if the response did not complehttps://github.com/guzzle/guzzle/issues/867/867
RingBridhttps://github.com/guzzle/guzzle/issues/866/866
v5.0.0
Compare Source
Adding support for non-blocking responses and some minor API cleanup.
New Features
guzzlehttp/guzzle-ring
.concurrently. Other plugins like this can now be updated to be non-blocking.
events.
GuzzleHttp\Pool
which implements FutureInterface and transfersrequests concurrently using a capped pool size as efficiently as possible.
hasListeners()
to EmitterInterface.GuzzleHttp\ClientInterface::sendAll
and markedGuzzleHttp\Client::sendAll
as deprecated (it's still there, just not therecommended way).
Breaking changes
The breaking changes in this release are relatively minor. The biggest thing to
look out for is that request and response objects no longer implement fluent
interfaces.
return $this
) from requests,responses,
GuzzleHttp\Collection
,GuzzleHttp\Url
,GuzzleHttp\Query
,GuzzleHttp\Post\PostBody
, andGuzzleHttp\Cookie\SetCookie
. This blog post provides a good outline ofwhy I did this: https://ocramius.github.io/blog/fluent-interfaces-are-evil/.
This also makes the Guzzle message interfaces compatible with the current
PSR-7 message proposal.
for the HTTP request functions from function.php, these functions are now
implemented in
GuzzleHttp\Utils
using camelCase.GuzzleHttp\json_decode
moved to
GuzzleHttp\Utils::jsonDecode
.GuzzleHttp\get_path
moved toGuzzleHttp\Utils::getPath
.GuzzleHttp\set_path
moved toGuzzleHttp\Utils::setPath
.GuzzleHttp\batch
should now beGuzzleHttp\Pool::batch
, which returns anobjectStorage
. Using functions.phpcaused problems for many users: they aren't PSR-4 compliant, require an
explicit include, and needed an if-guard to ensure that the functions are not
declared multiple times.
GuzzleHttp\Adapter
, these are nowimplemented as callables that are stored in
GuzzleHttp\Ring\Client
.concurrently is now handled using a single adapter.
GuzzleHttp\Adapter\Transaction
toGuzzleHttp\Transaction
. TheTransaction object now exposes the request, response, and client as public
properties. The getters and setters have been removed.
body a response once the headers of the response were known. You can implement
a similar behavior in a number of ways. One example might be to use a
FnStream that has access to the transaction being sent. For example, when the
first byte is written, you could check if the response headers match your
expectations, and if so, change the actual stream body that is being
written to.
asArray
parameter fromGuzzleHttp\Message\MessageInterface::getHeader
. If you want to get a headervalue as an array, then use the newly added
getHeaderAsArray()
method ofMessageInterface
. This change makes the Guzzle interfaces compatible withthe PSR-7 interfaces.
GuzzleHttp\Message\MessageFactory
no longer allows subclasses to addcustom request options using double-dispatch (this was an implementation
detail). Instead, you should now provide an associative array to the
constructor which is a mapping of the request option name mapping to a
function that applies the option value to a request.
This control mechanism was used to stop a transfer of concurrent requests
from completing. This can now be handled by throwing the exception or by
cancelling a pool of requests or each outstanding future request individually.
GuzzleHttp\Stream\StreamInterface::getContents()
no longer accepts amaxLen
parameter. This update makes the Guzzle streams projectcompatible with the current PSR-7 proposal.
GuzzleHttp\Stream\Stream::__construct
,GuzzleHttp\Stream\Stream::factory
, andGuzzleHttp\Stream\Utils::create
no longer accept a size in the secondargument. They now accept an associative array of options, including the
"size" key and "metadata" key which can be used to provide custom metadata.
v4.2.4
Compare Source
v4.2.3
Compare Source
v4.2.2
Compare Source
request_fulluri
in stream adapter proxies.v4.2.1
Compare Source
v4.2.0
Compare Source
Clohttps://github.com/guzzle/guzzle/issues/767/767
Content-Encoding
response bodiesusing the
decode_content
request option. This is set totrue
by defaultto decode the response body if it comes over the wire with a
Content-Encoding
. Set this value tofalse
to disable decoding theresponse content, and pass a string to provide a request
Accept-Encoding
header and turn on automatic response decoding. This feature now allows you
to pass an
Accept-Encoding
header in the headers of a request but stilldisable automatic response decoding.
https://github.com/guzzle/guzzle/issues/764sues/764
requests in parallel. Clohttps://github.com/guzzle/guzzle/issues/760/760
package.
v4.1.8
Compare Source
stream=false
request option to throw an exception.
https://github.com/guzzle/guzzle/issues/769sues/769
Shttps://github.com/guzzle/guzzle/pull/765/765
Content-Type
header tomultipart/form-data
when creating POST requests to force multipart bodies.
https://github.com/guzzle/guzzle/issues/768sues/768
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.