Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: third_party/WebKit/Source/core/loader/FrameLoader.cpp

Issue 2445993006: [WIP] Upgrade-insecure-request: upgrade insecurely-redirected requests.
Patch Set: bugfix Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights
3 * reserved. 3 * reserved.
4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
5 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 5 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
6 * (http://www.torchmobile.com/) 6 * (http://www.torchmobile.com/)
7 * Copyright (C) 2008 Alp Toker <alp@atoker.com> 7 * Copyright (C) 2008 Alp Toker <alp@atoker.com>
8 * Copyright (C) Research In Motion Limited 2009. All rights reserved. 8 * Copyright (C) Research In Motion Limited 2009. All rights reserved.
9 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> 9 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com>
10 * Copyright (C) 2011 Google Inc. All rights reserved. 10 * Copyright (C) 2011 Google Inc. All rights reserved.
(...skipping 1614 matching lines...) Expand 10 before | Expand all | Expand 10 after
1625 type, 1625 type,
1626 frameLoadRequest.resourceRequest().httpBody() || frameLoadRequest.form(), 1626 frameLoadRequest.resourceRequest().httpBody() || frameLoadRequest.form(),
1627 frameLoadRequest.triggeringEvent()); 1627 frameLoadRequest.triggeringEvent());
1628 frameLoadRequest.resourceRequest().setRequestContext( 1628 frameLoadRequest.resourceRequest().setRequestContext(
1629 determineRequestContextFromNavigationType(navigationType)); 1629 determineRequestContextFromNavigationType(navigationType));
1630 frameLoadRequest.resourceRequest().setFrameType( 1630 frameLoadRequest.resourceRequest().setFrameType(
1631 m_frame->isMainFrame() ? WebURLRequest::FrameTypeTopLevel 1631 m_frame->isMainFrame() ? WebURLRequest::FrameTypeTopLevel
1632 : WebURLRequest::FrameTypeNested); 1632 : WebURLRequest::FrameTypeNested);
1633 ResourceRequest& request = frameLoadRequest.resourceRequest(); 1633 ResourceRequest& request = frameLoadRequest.resourceRequest();
1634 1634
1635 // Record the latest requiredCSP value that will be used when sending this
1636 // request.
1637 recordLatestRequiredCSP();
1638 modifyRequestForCSP(request, nullptr);
1639 if (!shouldContinueForNavigationPolicy( 1635 if (!shouldContinueForNavigationPolicy(
1640 request, frameLoadRequest.substituteData(), nullptr, 1636 request, frameLoadRequest.substituteData(), nullptr,
1641 frameLoadRequest.shouldCheckMainWorldContentSecurityPolicy(), 1637 frameLoadRequest.shouldCheckMainWorldContentSecurityPolicy(),
1642 navigationType, navigationPolicy, 1638 navigationType, navigationPolicy,
1643 type == FrameLoadTypeReplaceCurrentItem, 1639 type == FrameLoadTypeReplaceCurrentItem,
1644 frameLoadRequest.clientRedirect() == 1640 frameLoadRequest.clientRedirect() ==
1645 ClientRedirectPolicy::ClientRedirect, 1641 ClientRedirectPolicy::ClientRedirect,
1646 frameLoadRequest.form())) 1642 frameLoadRequest.form()))
1647 return; 1643 return;
1648 1644
1645 // Record the latest requiredCSP value that will be used when sending this
1646 // request.
1647 recordLatestRequiredCSP();
1648 modifyRequestForCSP(request, nullptr);
1649
1649 m_frame->document()->cancelParsing(); 1650 m_frame->document()->cancelParsing();
1650 detachDocumentLoader(m_provisionalDocumentLoader); 1651 detachDocumentLoader(m_provisionalDocumentLoader);
1651 1652
1652 // beforeunload fired above, and detaching a DocumentLoader can fire events, 1653 // beforeunload fired above, and detaching a DocumentLoader can fire events,
1653 // which can detach this frame. 1654 // which can detach this frame.
1654 if (!m_frame->host()) 1655 if (!m_frame->host())
1655 return; 1656 return;
1656 1657
1657 m_provisionalDocumentLoader = client()->createDocumentLoader( 1658 m_provisionalDocumentLoader = client()->createDocumentLoader(
1658 m_frame, request, frameLoadRequest.substituteData().isValid() 1659 m_frame, request, frameLoadRequest.substituteData().isValid()
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1877 1878
1878 // If we don't yet have an |m_document| (because we're loading an iframe, for 1879 // If we don't yet have an |m_document| (because we're loading an iframe, for
1879 // instance), check the FrameLoader's policy. 1880 // instance), check the FrameLoader's policy.
1880 WebInsecureRequestPolicy relevantPolicy = 1881 WebInsecureRequestPolicy relevantPolicy =
1881 document ? document->getInsecureRequestPolicy() 1882 document ? document->getInsecureRequestPolicy()
1882 : getInsecureRequestPolicy(); 1883 : getInsecureRequestPolicy();
1883 SecurityContext::InsecureNavigationsSet* relevantNavigationSet = 1884 SecurityContext::InsecureNavigationsSet* relevantNavigationSet =
1884 document ? document->insecureNavigationsToUpgrade() 1885 document ? document->insecureNavigationsToUpgrade()
1885 : insecureNavigationsToUpgrade(); 1886 : insecureNavigationsToUpgrade();
1886 1887
1888 resourceRequest.setInsecurePolicy(relevantPolicy);
1889
1887 if (url.protocolIs("http") && relevantPolicy & kUpgradeInsecureRequests) { 1890 if (url.protocolIs("http") && relevantPolicy & kUpgradeInsecureRequests) {
1888 // We always upgrade requests that meet any of the following criteria: 1891 // We always upgrade requests that meet any of the following criteria:
1889 // 1892 //
1890 // 1. Are for subresources (including nested frames). 1893 // 1. Are for subresources (including nested frames).
1891 // 2. Are form submissions. 1894 // 2. Are form submissions.
1892 // 3. Whose hosts are contained in the document's InsecureNavigationSet. 1895 // 3. Whose hosts are contained in the document's InsecureNavigationSet.
1893 if (resourceRequest.frameType() == WebURLRequest::FrameTypeNone || 1896 if (resourceRequest.frameType() == WebURLRequest::FrameTypeNone ||
1894 resourceRequest.frameType() == WebURLRequest::FrameTypeNested || 1897 resourceRequest.frameType() == WebURLRequest::FrameTypeNested ||
1895 resourceRequest.requestContext() == WebURLRequest::RequestContextForm || 1898 resourceRequest.requestContext() == WebURLRequest::RequestContextForm ||
1896 (!url.host().isNull() && 1899 (!url.host().isNull() &&
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1928 m_documentLoader ? m_documentLoader->url() : String()); 1931 m_documentLoader ? m_documentLoader->url() : String());
1929 return tracedValue; 1932 return tracedValue;
1930 } 1933 }
1931 1934
1932 inline void FrameLoader::takeObjectSnapshot() const { 1935 inline void FrameLoader::takeObjectSnapshot() const {
1933 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID("loading", "FrameLoader", this, 1936 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID("loading", "FrameLoader", this,
1934 toTracedValue()); 1937 toTracedValue());
1935 } 1938 }
1936 1939
1937 } // namespace blink 1940 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698