summaryrefslogtreecommitdiffstats
path: root/chrome/browser/safe_browsing/protocol_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/safe_browsing/protocol_manager.cc')
-rw-r--r--chrome/browser/safe_browsing/protocol_manager.cc55
1 files changed, 41 insertions, 14 deletions
diff --git a/chrome/browser/safe_browsing/protocol_manager.cc b/chrome/browser/safe_browsing/protocol_manager.cc
index 487ec9f..bff53fc 100644
--- a/chrome/browser/safe_browsing/protocol_manager.cc
+++ b/chrome/browser/safe_browsing/protocol_manager.cc
@@ -47,8 +47,8 @@ SafeBrowsingProtocolManager::SafeBrowsingProtocolManager(
const std::string& client_key,
const std::string& wrapped_key,
URLRequestContextGetter* request_context_getter,
- const std::string& info_url_prefix,
- const std::string& mackey_url_prefix,
+ const std::string& http_url_prefix,
+ const std::string& https_url_prefix,
bool disable_auto_update)
: sb_service_(sb_service),
request_type_(NO_REQUEST),
@@ -65,10 +65,10 @@ SafeBrowsingProtocolManager::SafeBrowsingProtocolManager(
update_size_(0),
client_name_(client_name),
request_context_getter_(request_context_getter),
- info_url_prefix_(info_url_prefix),
- mackey_url_prefix_(mackey_url_prefix),
+ http_url_prefix_(http_url_prefix),
+ https_url_prefix_(https_url_prefix),
disable_auto_update_(disable_auto_update) {
- DCHECK(!info_url_prefix_.empty() && !mackey_url_prefix_.empty());
+ DCHECK(!http_url_prefix_.empty() && !https_url_prefix_.empty());
// Set the backoff multiplier fuzz to a random value between 0 and 1.
back_off_fuzz_ = static_cast<float>(base::RandDouble());
@@ -88,7 +88,7 @@ SafeBrowsingProtocolManager::~SafeBrowsingProtocolManager() {
hash_requests_.end());
hash_requests_.clear();
- // Delete in-progress safebrowsing reports.
+ // Delete in-progress safebrowsing reports (hits and details).
STLDeleteContainerPointers(safebrowsing_reports_.begin(),
safebrowsing_reports_.end());
safebrowsing_reports_.clear();
@@ -588,15 +588,16 @@ void SafeBrowsingProtocolManager::OnChunkInserted() {
}
}
+// Sends a SafeBrowsing "hit" for UMA users.
void SafeBrowsingProtocolManager::ReportSafeBrowsingHit(
const GURL& malicious_url,
const GURL& page_url,
const GURL& referrer_url,
bool is_subresource,
SafeBrowsingService::UrlCheckResult threat_type) {
- GURL report_url = SafeBrowsingReportUrl(malicious_url, page_url,
- referrer_url, is_subresource,
- threat_type);
+ GURL report_url = SafeBrowsingHitUrl(malicious_url, page_url,
+ referrer_url, is_subresource,
+ threat_type);
URLFetcher* report = new URLFetcher(report_url, URLFetcher::GET, this);
report->set_load_flags(net::LOAD_DISABLE_CACHE);
report->set_request_context(request_context_getter_);
@@ -604,6 +605,21 @@ void SafeBrowsingProtocolManager::ReportSafeBrowsingHit(
safebrowsing_reports_.insert(report);
}
+// Sends malware details for users who opt-in.
+void SafeBrowsingProtocolManager::ReportMalwareDetails(
+ const std::string& report) {
+ GURL report_url = MalwareDetailsUrl();
+ URLFetcher* fetcher = new URLFetcher(report_url, URLFetcher::POST, this);
+ fetcher->set_load_flags(net::LOAD_DISABLE_CACHE);
+ fetcher->set_request_context(request_context_getter_);
+ fetcher->set_upload_data("application/octet-stream", report);
+ // Don't try too hard to send reports on failures.
+ fetcher->set_automatically_retry_on_5xx(false);
+ fetcher->Start();
+ safebrowsing_reports_.insert(fetcher);
+}
+
+
// static
std::string SafeBrowsingProtocolManager::FormatList(
const SBListChunkRanges& list, bool use_mac) {
@@ -662,7 +678,7 @@ std::string SafeBrowsingProtocolManager::ComposeUrl(
}
GURL SafeBrowsingProtocolManager::UpdateUrl(bool use_mac) const {
- std::string url = ComposeUrl(info_url_prefix_, "downloads", client_name_,
+ std::string url = ComposeUrl(http_url_prefix_, "downloads", client_name_,
version_, additional_query_);
if (use_mac) {
url.append("&wrkey=");
@@ -672,7 +688,7 @@ GURL SafeBrowsingProtocolManager::UpdateUrl(bool use_mac) const {
}
GURL SafeBrowsingProtocolManager::GetHashUrl(bool use_mac) const {
- std::string url= ComposeUrl(info_url_prefix_, "gethash", client_name_,
+ std::string url= ComposeUrl(http_url_prefix_, "gethash", client_name_,
version_, additional_query_);
if (use_mac) {
url.append("&wrkey=");
@@ -682,17 +698,18 @@ GURL SafeBrowsingProtocolManager::GetHashUrl(bool use_mac) const {
}
GURL SafeBrowsingProtocolManager::MacKeyUrl() const {
- return GURL(ComposeUrl(mackey_url_prefix_, "newkey", client_name_, version_,
+ return GURL(ComposeUrl(https_url_prefix_, "newkey", client_name_, version_,
additional_query_));
}
-GURL SafeBrowsingProtocolManager::SafeBrowsingReportUrl(
+GURL SafeBrowsingProtocolManager::SafeBrowsingHitUrl(
const GURL& malicious_url, const GURL& page_url,
const GURL& referrer_url, bool is_subresource,
SafeBrowsingService::UrlCheckResult threat_type) const {
DCHECK(threat_type == SafeBrowsingService::URL_MALWARE ||
threat_type == SafeBrowsingService::URL_PHISHING);
- std::string url = ComposeUrl(info_url_prefix_, "report", client_name_,
+ // The malware and phishing hits go over HTTP.
+ std::string url = ComposeUrl(http_url_prefix_, "report", client_name_,
version_, additional_query_);
return GURL(StringPrintf("%s&evts=%s&evtd=%s&evtr=%s&evhr=%s&evtb=%d",
url.c_str(),
@@ -704,6 +721,16 @@ GURL SafeBrowsingProtocolManager::SafeBrowsingReportUrl(
is_subresource));
}
+GURL SafeBrowsingProtocolManager::MalwareDetailsUrl() const {
+ // The malware details go over HTTPS.
+ std::string url = StringPrintf(
+ "%s/clientreport/malware?client=%s&appver=%s&pver=1.0",
+ https_url_prefix_.c_str(),
+ client_name_.c_str(),
+ version_.c_str());
+ return GURL(url);
+}
+
GURL SafeBrowsingProtocolManager::NextChunkUrl(const std::string& url) const {
std::string next_url;
if (!StartsWithASCII(url, "http://", false) &&