Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 #include "components/safe_browsing/password_protection/password_protection_reque st.h" | 4 #include "components/safe_browsing/password_protection/password_protection_reque st.h" |
| 5 | 5 |
| 6 #include "base/memory/ptr_util.h" | 6 #include "base/memory/ptr_util.h" |
| 7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
| 8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
| 9 #include "components/data_use_measurement/core/data_use_user_data.h" | 9 #include "components/data_use_measurement/core/data_use_user_data.h" |
| 10 #include "components/safe_browsing_db/database_manager.h" | 10 #include "components/safe_browsing_db/database_manager.h" |
| 11 #include "net/base/escape.h" | 11 #include "net/base/escape.h" |
| 12 #include "net/base/load_flags.h" | 12 #include "net/base/load_flags.h" |
| 13 #include "net/base/url_util.h" | 13 #include "net/base/url_util.h" |
| 14 #include "net/http/http_status_code.h" | 14 #include "net/http/http_status_code.h" |
| 15 #include "net/traffic_annotation/network_traffic_annotation.h" | |
| 15 | 16 |
| 16 using content::BrowserThread; | 17 using content::BrowserThread; |
| 17 | 18 |
| 18 namespace safe_browsing { | 19 namespace safe_browsing { |
| 19 | 20 |
| 20 PasswordProtectionRequest::PasswordProtectionRequest( | 21 PasswordProtectionRequest::PasswordProtectionRequest( |
| 21 const GURL& main_frame_url, | 22 const GURL& main_frame_url, |
| 22 const GURL& password_form_action, | 23 const GURL& password_form_action, |
| 23 const GURL& password_form_frame_url, | 24 const GURL& password_form_frame_url, |
| 24 LoginReputationClientRequest::TriggerType type, | 25 LoginReputationClientRequest::TriggerType type, |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 119 FillRequestProto(); | 120 FillRequestProto(); |
| 120 | 121 |
| 121 std::string serialized_request; | 122 std::string serialized_request; |
| 122 if (!request_proto_->SerializeToString(&serialized_request)) { | 123 if (!request_proto_->SerializeToString(&serialized_request)) { |
| 123 Finish(RequestOutcome::REQUEST_MALFORMED, nullptr); | 124 Finish(RequestOutcome::REQUEST_MALFORMED, nullptr); |
| 124 return; | 125 return; |
| 125 } | 126 } |
| 126 | 127 |
| 127 // In case the request take too long, we set a timer to cancel this request. | 128 // In case the request take too long, we set a timer to cancel this request. |
| 128 StartTimeout(); | 129 StartTimeout(); |
| 129 | 130 net::NetworkTrafficAnnotationTag traffic_annotation = |
| 131 net::DefineNetworkTrafficAnnotation("password_protection_request", R"( | |
| 132 semantics { | |
| 133 sender: "Safe Browsing" | |
| 134 description: | |
| 135 "When the user is about to log in to a new, uncommon site, Chrome " | |
| 136 "will send a request to Safe Browsing to determine if the page is " | |
| 137 "phishing. It'll then show a warning if the page is bad." | |
|
msramek
2017/05/12 19:10:19
nit: "bad" is a subjective term.
Maybe "...if the
Jialiu Lin
2017/05/12 19:59:33
Agree, "...if the page poses a risk of phishing."
Ramin Halavati
2017/05/14 13:21:33
Done.
| |
| 138 trigger: | |
| 139 "When the user has opted-in to Safe Browsing extended reporting, " | |
| 140 "focuses on a password field on a page that isn't popular or known " | |
|
msramek
2017/05/12 19:10:19
nit: I would rephrase a bit for readability.
"Whe
Jialiu Lin
2017/05/12 19:59:33
SGTM
Ramin Halavati
2017/05/14 13:21:33
Done.
| |
| 141 "to be safe, and they haven't visited." | |
| 142 data: | |
| 143 "URL and referrer of the current page, password form action, and " | |
| 144 "iframe structure." | |
| 145 destination: GOOGLE_OWNED_SERVICE | |
| 146 } | |
| 147 policy { | |
| 148 cookies_allowed: true | |
| 149 cookies_store: "Safe Browsing Cookie Store" | |
| 150 setting: | |
| 151 "Users can control this feature via 'Protect you and your device " | |
| 152 "from dangerous sites' or 'Automatically report details of " | |
| 153 "possible security incidents to Google' setting under 'Privacy'. " | |
|
msramek
2017/05/12 19:10:19
Do we normally list both SB and SBER as the settin
Jialiu Lin
2017/05/12 19:59:33
SBER condition is temporary, eventually this featu
msramek
2017/05/15 12:57:28
I'm just saying that all SBER features can be disa
Ramin Halavati
2017/05/15 13:37:18
We usually set the most fine grained policy that d
| |
| 154 "By default, the first setting is enabled and the second is not." | |
| 155 chrome_policy { | |
| 156 SafeBrowsingEnabled { | |
| 157 policy_options {mode: MANDATORY} | |
| 158 SafeBrowsingEnabled: false | |
| 159 } | |
| 160 } | |
| 161 chrome_policy { | |
| 162 SafeBrowsingExtendedReportingOptInAllowed { | |
| 163 policy_options {mode: MANDATORY} | |
| 164 SafeBrowsingExtendedReportingOptInAllowed: false | |
| 165 } | |
| 166 } | |
| 167 })"); | |
| 130 fetcher_ = net::URLFetcher::Create( | 168 fetcher_ = net::URLFetcher::Create( |
| 131 0, PasswordProtectionService::GetPasswordProtectionRequestUrl(), | 169 0, PasswordProtectionService::GetPasswordProtectionRequestUrl(), |
| 132 net::URLFetcher::POST, this); | 170 net::URLFetcher::POST, this, traffic_annotation); |
| 133 data_use_measurement::DataUseUserData::AttachToFetcher( | 171 data_use_measurement::DataUseUserData::AttachToFetcher( |
| 134 fetcher_.get(), data_use_measurement::DataUseUserData::SAFE_BROWSING); | 172 fetcher_.get(), data_use_measurement::DataUseUserData::SAFE_BROWSING); |
| 135 fetcher_->SetLoadFlags(net::LOAD_DISABLE_CACHE); | 173 fetcher_->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
| 136 fetcher_->SetAutomaticallyRetryOn5xx(false); | 174 fetcher_->SetAutomaticallyRetryOn5xx(false); |
| 137 fetcher_->SetRequestContext( | 175 fetcher_->SetRequestContext( |
| 138 password_protection_service_->request_context_getter().get()); | 176 password_protection_service_->request_context_getter().get()); |
| 139 fetcher_->SetUploadData("application/octet-stream", serialized_request); | 177 fetcher_->SetUploadData("application/octet-stream", serialized_request); |
| 140 request_start_time_ = base::TimeTicks::Now(); | 178 request_start_time_ = base::TimeTicks::Now(); |
| 141 fetcher_->Start(); | 179 fetcher_->Start(); |
| 142 } | 180 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 217 } | 255 } |
| 218 | 256 |
| 219 void PasswordProtectionRequest::Cancel(bool timed_out) { | 257 void PasswordProtectionRequest::Cancel(bool timed_out) { |
| 220 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 258 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 221 fetcher_.reset(); | 259 fetcher_.reset(); |
| 222 | 260 |
| 223 Finish(timed_out ? TIMEDOUT : CANCELED, nullptr); | 261 Finish(timed_out ? TIMEDOUT : CANCELED, nullptr); |
| 224 } | 262 } |
| 225 | 263 |
| 226 } // namespace safe_browsing | 264 } // namespace safe_browsing |
| OLD | NEW |