CSP: Allow schemeless source expressions to match an HTTP or HTTPS resource
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 15 Feb 2016 18:53:59 +0000 (18:53 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 15 Feb 2016 18:53:59 +0000 (18:53 +0000)
https://bugs.webkit.org/show_bug.cgi?id=154177
<rdar://problem/22708772>

Reviewed by Brent Fulgham.

Source/WebCore:

Allow a schemeless source expression to match an HTTP or HTTPS subresource when the page is
delivered over HTTP as per section Matching Source Expressions of the Content Security Policy
2.0 spec., <https://www.w3.org/TR/2015/CR-CSP2-20150721/> (21 July 2015).

Currently we have logic that implements this functionality, but it is guarded behind the compile-
time macro ENABLE(CSP_NEXT) that is disabled by default. Instead we should always compile such
code. In subsequent commits we will move more code out from under the ENABLE(CSP_NEXT)-guard
towards removing the ENABLE_CSP_NEXT macro entirely.

* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::protocolMatchesSelf):

LayoutTests:

Update test case and expected result to test that a schemeless source expression
matches an HTTPS subresource (and does not trigger a Content Security Policy violation)
when the page is served over HTTP.

* http/tests/security/contentSecurityPolicy/source-list-parsing-10-expected.txt:
* http/tests/security/contentSecurityPolicy/source-list-parsing-10.html: Change "no" to "yes"
so that we consider it a success (and continue printing "PASS") when we load and execute the
script, <https://127.0.0.1:8443/security/contentSecurityPolicy/resources/script.js>.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@196581 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-10-expected.txt
LayoutTests/http/tests/security/contentSecurityPolicy/source-list-parsing-10.html
Source/WebCore/ChangeLog
Source/WebCore/page/csp/ContentSecurityPolicy.cpp

index 398c288..9c12a71 100644 (file)
@@ -1,3 +1,20 @@
+2016-02-15  Daniel Bates  <dabates@apple.com>
+
+        CSP: Allow schemeless source expressions to match an HTTP or HTTPS resource
+        https://bugs.webkit.org/show_bug.cgi?id=154177
+        <rdar://problem/22708772>
+
+        Reviewed by Brent Fulgham.
+
+        Update test case and expected result to test that a schemeless source expression
+        matches an HTTPS subresource (and does not trigger a Content Security Policy violation)
+        when the page is served over HTTP.
+
+        * http/tests/security/contentSecurityPolicy/source-list-parsing-10-expected.txt:
+        * http/tests/security/contentSecurityPolicy/source-list-parsing-10.html: Change "no" to "yes"
+        so that we consider it a success (and continue printing "PASS") when we load and execute the
+        script, <https://127.0.0.1:8443/security/contentSecurityPolicy/resources/script.js>.
+
 2016-02-15  Ryan Haddad  <ryanhaddad@apple.com>
 
         Rebaseline imported/w3c/web-platform-tests/html/dom/interfaces.html for ios-simulator after r196563
index 9f5af9f..3da125b 100644 (file)
@@ -1,5 +1,3 @@
-CONSOLE MESSAGE: Refused to load the script 'https://127.0.0.1:8443/security/contentSecurityPolicy/resources/script.js' because it violates the following Content Security Policy directive: "script-src 127.0.0.1:8443".
-
 None of these scripts should execute even though there are parse errors in the policy.
 
 
index 9cc5b42..4911d8a 100644 (file)
@@ -5,7 +5,7 @@
 <script>
 var tests = [
     ['yes', 'script-src 127.0.0.1:8000', 'resources/script.js'],
-    ['no', 'script-src 127.0.0.1:8443', 'https://127.0.0.1:8443/security/contentSecurityPolicy/resources/script.js'],
+    ['yes', 'script-src 127.0.0.1:8443', 'https://127.0.0.1:8443/security/contentSecurityPolicy/resources/script.js'],
 ];
 </script>
 </head>
index e6301c7..51b88ce 100644 (file)
@@ -1,3 +1,23 @@
+2016-02-15  Daniel Bates  <dabates@apple.com>
+
+        CSP: Allow schemeless source expressions to match an HTTP or HTTPS resource
+        https://bugs.webkit.org/show_bug.cgi?id=154177
+        <rdar://problem/22708772>
+
+        Reviewed by Brent Fulgham.
+
+        Allow a schemeless source expression to match an HTTP or HTTPS subresource when the page is
+        delivered over HTTP as per section Matching Source Expressions of the Content Security Policy
+        2.0 spec., <https://www.w3.org/TR/2015/CR-CSP2-20150721/> (21 July 2015).
+
+        Currently we have logic that implements this functionality, but it is guarded behind the compile-
+        time macro ENABLE(CSP_NEXT) that is disabled by default. Instead we should always compile such
+        code. In subsequent commits we will move more code out from under the ENABLE(CSP_NEXT)-guard
+        towards removing the ENABLE_CSP_NEXT macro entirely.
+
+        * page/csp/ContentSecurityPolicy.cpp:
+        (WebCore::ContentSecurityPolicy::protocolMatchesSelf):
+
 2016-02-15  Konstantin Tokarev  <annulen@yandex.ru>
 
         [cmake] Consolidated Linux-specific file lists.
index 17f32e2..3d1551d 100644 (file)
@@ -147,10 +147,8 @@ bool ContentSecurityPolicy::urlMatchesSelf(const URL& url) const
 
 bool ContentSecurityPolicy::protocolMatchesSelf(const URL& url) const
 {
-#if ENABLE(CSP_NEXT)
     if (equalLettersIgnoringASCIICase(m_selfSourceProtocol, "http"))
         return url.protocolIsInHTTPFamily();
-#endif
     return equalIgnoringASCIICase(url.protocol(), m_selfSourceProtocol);
 }