Title: [238659] trunk/Source/WebKit
Revision
238659
Author
commit-qu...@webkit.org
Date
2018-11-28 20:14:02 -0800 (Wed, 28 Nov 2018)

Log Message

Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
https://bugs.webkit.org/show_bug.cgi?id=192094
<rdar://problem/45851103> HTTPS Upgrade: Consult dummy storage for HTTPS Upgrade, Apply If Appropriate

Patch by Vivek Seth <v_s...@apple.com> on 2018-11-28
Reviewed by Chris Dumez.

For main page loads upgrade HTTP requests to HTTPS if the hostname belongs to a set of upgradable hostnames.

* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded):
(WebKit::NetworkLoadChecker::checkRequest):
* NetworkProcess/NetworkLoadChecker.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::start):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (238658 => 238659)


--- trunk/Source/WebKit/ChangeLog	2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/ChangeLog	2018-11-29 04:14:02 UTC (rev 238659)
@@ -1,3 +1,20 @@
+2018-11-28  Vivek Seth  <v_s...@apple.com>
+
+        Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
+        https://bugs.webkit.org/show_bug.cgi?id=192094
+        <rdar://problem/45851103> HTTPS Upgrade: Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
+
+        Reviewed by Chris Dumez.
+
+        For main page loads upgrade HTTP requests to HTTPS if the hostname belongs to a set of upgradable hostnames.
+
+        * NetworkProcess/NetworkLoadChecker.cpp:
+        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded):
+        (WebKit::NetworkLoadChecker::checkRequest):
+        * NetworkProcess/NetworkLoadChecker.h:
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::start):
+
 2018-11-28  Simon Fraser  <simon.fra...@apple.com>
 
         REGRESSION (r234980): Crash in -[WKWebView _restorePageStateToUnobscuredCenter:scale:]

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (238658 => 238659)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2018-11-29 04:14:02 UTC (rev 238659)
@@ -190,8 +190,45 @@
     return makeUnexpected(ResourceError { String { }, 0, m_url, WTFMove(message), ResourceError::Type::AccessControl });
 }
 
+#if ENABLE(HTTPS_UPGRADE)
+bool NetworkLoadChecker::applyHTTPSUpgradeIfNeeded(ResourceRequest& request)
+{
+    // Use dummy list for now.
+    static NeverDestroyed<HashSet<String>> upgradableHosts = std::initializer_list<String> {
+        "www.bbc.com"_s, // (source: https://whynohttps.com)
+        "www.speedtest.net"_s, // (source: https://whynohttps.com)
+        "www.bea.gov"_s // (source: https://pulse.cio.gov/data/domains/https.csv)
+    };
+
+    auto& url = ""
+
+    // Only upgrade http urls.
+    if (!url.protocolIs("http"))
+        return false;
+
+    if (!upgradableHosts.get().contains(url.host().toString()))
+        return false;
+
+    auto newURL = url;
+    newURL.setProtocol("https"_s);
+    request.setURL(newURL);
+    return true;
+
+    return false;
+}
+#endif // ENABLE(HTTPS_UPGRADE)
+
 void NetworkLoadChecker::checkRequest(ResourceRequest&& request, ContentSecurityPolicyClient* client, ValidationHandler&& handler)
 {
+
+#if ENABLE(HTTPS_UPGRADE)
+    if (request.requester() == ResourceRequest::Requester::Main) {
+        if (applyHTTPSUpgradeIfNeeded(request))
+            ASSERT(request.url().protocolIs("https"));
+    }
+
+#endif // ENABLE(HTTPS_UPGRADE)
+
     if (auto* contentSecurityPolicy = this->contentSecurityPolicy()) {
         if (isRedirected()) {
             auto type = m_options.mode == FetchOptions::Mode::Navigate ? ContentSecurityPolicy::InsecureRequestType::Navigation : ContentSecurityPolicy::InsecureRequestType::Load;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h (238658 => 238659)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h	2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h	2018-11-29 04:14:02 UTC (rev 238659)
@@ -138,6 +138,11 @@
     bool m_checkContentExtensions { false };
     bool m_shouldCaptureExtraNetworkLoadMetrics { false };
     WebCore::NetworkLoadInformation m_loadInformation;
+
+#if ENABLE(HTTPS_UPGRADE)
+    static bool applyHTTPSUpgradeIfNeeded(WebCore::ResourceRequest&);
+#endif // ENABLE(HTTPS_UPGRADE)
+
 };
 
 }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (238658 => 238659)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2018-11-29 03:54:32 UTC (rev 238658)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2018-11-29 04:14:02 UTC (rev 238659)
@@ -192,9 +192,11 @@
                     this->didFailLoading(result.error());
                 return;
             }
-            if (this->canUseCache(this->originalRequest())) {
+
+            auto currentRequest = result.value();
+            if (this->canUseCache(currentRequest)) {
                 RELEASE_LOG_IF_ALLOWED("start: Checking cache for resource (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", isMainResource = %d, isSynchronous = %d)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, this->isMainResource(), this->isSynchronous());
-                this->retrieveCacheEntry(this->originalRequest());
+                this->retrieveCacheEntry(currentRequest);
                 return;
             }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to