summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2016-03-10 22:32:29 +0100
committerLukas Reschke <lukas@owncloud.com>2016-03-10 22:32:29 +0100
commitdc6789fd5bf4ef537a543fcafc90070265a8ee7c (patch)
tree0b7e4aaf938a351ecb8903219ba82fcd5b33512c
parentb502667f3a5e6f08fb2fefbac56134d074859c09 (diff)
downloadnextcloud-server-dc6789fd5bf4ef537a543fcafc90070265a8ee7c.tar.gz
nextcloud-server-dc6789fd5bf4ef537a543fcafc90070265a8ee7c.zip
Explicitly check for port
The setup uses `\OCP\IRequest::getInsecureServerHost` which in some cases can also include a port. This makes the trusted domain check fail thus. I've decided to add this here that way because adjusting the setup would require parsing the host properly. This is not something that can be done very good in PHP. Check the following example for why `parse_url` is not our friend: https://3v4l.org/k501Z
-rw-r--r--lib/private/security/trusteddomainhelper.php6
-rw-r--r--tests/lib/security/trusteddomainhelper.php10
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/private/security/trusteddomainhelper.php b/lib/private/security/trusteddomainhelper.php
index 885ceee23c3..409628677a7 100644
--- a/lib/private/security/trusteddomainhelper.php
+++ b/lib/private/security/trusteddomainhelper.php
@@ -78,6 +78,12 @@ class TrustedDomainHelper {
if (preg_match(Request::REGEX_LOCALHOST, $domain) === 1) {
return true;
}
+
+ // Compare with port appended
+ if(in_array($domainWithPort, $trustedList, true)) {
+ return true;
+ }
+
return in_array($domain, $trustedList, true);
}
diff --git a/tests/lib/security/trusteddomainhelper.php b/tests/lib/security/trusteddomainhelper.php
index 52a8f1be630..3581211ce61 100644
--- a/tests/lib/security/trusteddomainhelper.php
+++ b/tests/lib/security/trusteddomainhelper.php
@@ -42,7 +42,12 @@ class TrustedDomainHelperTest extends \Test\TestCase {
* @return array
*/
public function trustedDomainDataProvider() {
- $trustedHostTestList = ['host.one.test', 'host.two.test', '[1fff:0:a88:85a3::ac1f]'];
+ $trustedHostTestList = [
+ 'host.one.test',
+ 'host.two.test',
+ '[1fff:0:a88:85a3::ac1f]',
+ 'host.three.test:443',
+ ];
return [
// empty defaults to false with 8.1
[null, 'host.one.test:8080', false],
@@ -56,6 +61,9 @@ class TrustedDomainHelperTest extends \Test\TestCase {
[$trustedHostTestList, '[1fff:0:a88:85a3::ac1f]', true],
[$trustedHostTestList, '[1fff:0:a88:85a3::ac1f]:801', true],
[$trustedHostTestList, '[1fff:0:a88:85a3::ac1f]:801:34', false],
+ [$trustedHostTestList, 'host.three.test:443', true],
+ [$trustedHostTestList, 'host.three.test:80', false],
+ [$trustedHostTestList, 'host.three.test', false],
// trust localhost regardless of trust list
[$trustedHostTestList, 'localhost', true],
[$trustedHostTestList, 'localhost:8080', true],