|
|
|
|
@ -29,41 +29,41 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyScriptDomainValid() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' www.owncloud.com;style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' www.nextcloud.com;style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyScriptDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' www.owncloud.com www.owncloud.org;style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' www.nextcloud.com www.nextcloud.org;style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowScriptDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowScriptDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowScriptDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowScriptDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' www.owncloud.com;style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' www.nextcloud.com;style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowScriptDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowScriptDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowScriptDomainMultipleStacked() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowScriptDomain('www.owncloud.org')->disallowScriptDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedScriptDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowScriptDomain('www.nextcloud.org')->disallowScriptDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -75,41 +75,41 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyStyleDomainValid() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.owncloud.com 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.nextcloud.com 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyStyleDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.owncloud.com www.owncloud.org 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.nextcloud.com www.nextcloud.org 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowStyleDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowStyleDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.owncloud.com 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.nextcloud.com 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowStyleDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowStyleDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowStyleDomainMultipleStacked() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowStyleDomain('www.owncloud.org')->disallowStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowStyleDomain('www.nextcloud.org')->disallowStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -121,9 +121,9 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyStyleAllowInlineWithDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.owncloud.com 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' www.nextcloud.com 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedStyleDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -135,275 +135,275 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyImageDomainValid() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob: www.owncloud.com;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob: www.nextcloud.com;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyImageDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob: www.owncloud.com www.owncloud.org;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob: www.nextcloud.com www.nextcloud.org;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowImageDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowImageDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowImageDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowImageDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob: www.owncloud.com;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob: www.nextcloud.com;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowImageDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowImageDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowImageDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowImageDomain('www.owncloud.org')->disallowImageDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedImageDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowImageDomain('www.nextcloud.org')->disallowImageDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyFontDomainValid() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data: www.owncloud.com;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data: www.nextcloud.com;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyFontDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data: www.owncloud.com www.owncloud.org;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data: www.nextcloud.com www.nextcloud.org;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowFontDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFontDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFontDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowFontDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data: www.owncloud.com;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data: www.nextcloud.com;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFontDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFontDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowFontDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFontDomain('www.owncloud.org')->disallowFontDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFontDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFontDomain('www.nextcloud.org')->disallowFontDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyConnectDomainValid() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self' www.owncloud.com;media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self' www.nextcloud.com;media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyConnectDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self' www.owncloud.com www.owncloud.org;media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self' www.nextcloud.com www.nextcloud.org;media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowConnectDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowConnectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowConnectDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowConnectDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self' www.owncloud.com;media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self' www.nextcloud.com;media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowConnectDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowConnectDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowConnectDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowConnectDomain('www.owncloud.org')->disallowConnectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedConnectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowConnectDomain('www.nextcloud.org')->disallowConnectDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyMediaDomainValid() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self' www.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self' www.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyMediaDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self' www.owncloud.com www.owncloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self' www.nextcloud.com www.nextcloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowMediaDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowMediaDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowMediaDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowMediaDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self' www.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self' www.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowMediaDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowMediaDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowMediaDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowMediaDomain('www.owncloud.org')->disallowMediaDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedMediaDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowMediaDomain('www.nextcloud.org')->disallowMediaDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyObjectDomainValid() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';object-src www.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';object-src www.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyObjectDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';object-src www.owncloud.com www.owncloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';object-src www.nextcloud.com www.nextcloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowObjectDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowObjectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowObjectDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowObjectDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';object-src www.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';object-src www.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowObjectDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowObjectDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowObjectDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowObjectDomain('www.owncloud.org')->disallowObjectDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedObjectDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowObjectDomain('www.nextcloud.org')->disallowObjectDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetAllowedFrameDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-src www.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-src www.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyFrameDomainValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-src www.owncloud.com www.owncloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-src www.nextcloud.com www.nextcloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowFrameDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFrameDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFrameDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowFrameDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-src www.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-src www.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFrameDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFrameDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowFrameDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFrameDomain('www.owncloud.org')->disallowFrameDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedFrameDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowFrameDomain('www.nextcloud.org')->disallowFrameDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetAllowedChildSrcDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';child-src child.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';child-src child.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyChildSrcValidMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';child-src child.owncloud.com child.owncloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';child-src child.nextcloud.com child.nextcloud.org;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('child.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowChildSrcDomain() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowChildSrcDomainMultiple() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';child-src www.owncloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';child-src www.nextcloud.com;frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.owncloud.org'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.nextcloud.org'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyDisallowChildSrcDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.owncloud.org')->disallowChildSrcDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.nextcloud.org')->disallowChildSrcDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -443,8 +443,8 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
public function testGetPolicyDisallowFrameAncestorDomainMultipleStakes() { |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.owncloud.org')->disallowChildSrcDomain('www.owncloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->addAllowedChildSrcDomain('www.nextcloud.com'); |
|
|
|
|
$this->contentSecurityPolicy->disallowChildSrcDomain('www.nextcloud.org')->disallowChildSrcDomain('www.nextcloud.com'); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -463,8 +463,8 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyNonce() { |
|
|
|
|
$nonce = 'my-nonce'; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-".base64_encode($nonce) . "';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$nonce = base64_encode('my-nonce'); |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-$nonce';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->useJsNonce($nonce); |
|
|
|
|
$this->contentSecurityPolicy->useStrictDynamicOnScripts(false); |
|
|
|
|
@ -472,16 +472,16 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyNonceDefault() { |
|
|
|
|
$nonce = 'my-nonce'; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-".base64_encode($nonce) . "';script-src-elem 'strict-dynamic' 'nonce-".base64_encode($nonce) . "';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$nonce = base64_encode('my-nonce'); |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-$nonce';script-src-elem 'strict-dynamic' 'nonce-$nonce';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->useJsNonce($nonce); |
|
|
|
|
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyNonceStrictDynamic() { |
|
|
|
|
$nonce = 'my-nonce'; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'strict-dynamic' 'nonce-".base64_encode($nonce) . "';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$nonce = base64_encode('my-nonce'); |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'strict-dynamic' 'nonce-$nonce';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->useJsNonce($nonce); |
|
|
|
|
$this->contentSecurityPolicy->useStrictDynamic(true); |
|
|
|
|
@ -490,8 +490,8 @@ class ContentSecurityPolicyTest extends \Test\TestCase { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testGetPolicyNonceStrictDynamicDefault() { |
|
|
|
|
$nonce = 'my-nonce'; |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'strict-dynamic' 'nonce-".base64_encode($nonce) . "';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
$nonce = base64_encode('my-nonce'); |
|
|
|
|
$expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'strict-dynamic' 'nonce-$nonce';style-src 'self' 'unsafe-inline';img-src 'self' data: blob:;font-src 'self' data:;connect-src 'self';media-src 'self';frame-ancestors 'self';form-action 'self'"; |
|
|
|
|
|
|
|
|
|
$this->contentSecurityPolicy->useJsNonce($nonce); |
|
|
|
|
$this->contentSecurityPolicy->useStrictDynamic(true); |
|
|
|
|
|