mirror of
https://github.com/nextcloud/server.git
synced 2026-06-11 09:42:09 -04:00
chore: always execute parse_url in preventLocalAddress
This change should make it easier to spot wrong uses of the HTTP client on development setups where allow_local_remote_servers is usually true. Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
This commit is contained in:
parent
870816466f
commit
6be00432b7
2 changed files with 12 additions and 5 deletions
|
|
@ -158,14 +158,15 @@ class Client implements IClient {
|
|||
}
|
||||
|
||||
protected function preventLocalAddress(string $uri, array $options): void {
|
||||
if ($this->isLocalAddressAllowed($options)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$host = parse_url($uri, PHP_URL_HOST);
|
||||
if ($host === false || $host === null) {
|
||||
throw new LocalServerException('Could not detect any host');
|
||||
}
|
||||
|
||||
if ($this->isLocalAddressAllowed($options)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->remoteHostValidator->isValid($host)) {
|
||||
throw new LocalServerException('Host "' . $host . '" violates local access rules');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,6 +130,13 @@ class ClientTest extends \Test\TestCase {
|
|||
], self::invokePrivate($this->client, 'getProxyUri'));
|
||||
}
|
||||
|
||||
public function testPreventLocalAddressThrowOnInvalidUri(): void {
|
||||
$this->expectException(LocalServerException::class);
|
||||
$this->expectExceptionMessage('Could not detect any host');
|
||||
|
||||
self::invokePrivate($this->client, 'preventLocalAddress', ['!@#$', []]);
|
||||
}
|
||||
|
||||
public function dataPreventLocalAddress():array {
|
||||
return [
|
||||
['https://localhost/foo.bar'],
|
||||
|
|
@ -146,7 +153,6 @@ class ClientTest extends \Test\TestCase {
|
|||
['https://10.0.0.1'],
|
||||
['https://another-host.local'],
|
||||
['https://service.localhost'],
|
||||
['!@#$', true], // test invalid url
|
||||
['https://normal.host.com'],
|
||||
['https://com.one-.nextcloud-one.com'],
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in a new issue