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

Side by Side Diff: chrome/browser/safe_browsing/protocol_manager.h

Issue 4822002: Send malware reports when a user opts-in from the safe browsing interstitial ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 4
5 #ifndef CHROME_BROWSER_SAFE_BROWSING_PROTOCOL_MANAGER_H_ 5 #ifndef CHROME_BROWSER_SAFE_BROWSING_PROTOCOL_MANAGER_H_
6 #define CHROME_BROWSER_SAFE_BROWSING_PROTOCOL_MANAGER_H_ 6 #define CHROME_BROWSER_SAFE_BROWSING_PROTOCOL_MANAGER_H_
7 #pragma once 7 #pragma once
8 8
9 // A class that implements Chrome's interface with the SafeBrowsing protocol. 9 // A class that implements Chrome's interface with the SafeBrowsing protocol.
10 // The SafeBrowsingProtocolManager handles formatting and making requests of, 10 // The SafeBrowsingProtocolManager handles formatting and making requests of,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #endif 43 #endif
44 44
45 class SafeBrowsingProtocolManager : public URLFetcher::Delegate { 45 class SafeBrowsingProtocolManager : public URLFetcher::Delegate {
46 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestBackOffTimes); 46 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestBackOffTimes);
47 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestChunkStrings); 47 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestChunkStrings);
48 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestGetHashUrl); 48 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestGetHashUrl);
49 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, 49 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest,
50 TestGetHashBackOffTimes); 50 TestGetHashBackOffTimes);
51 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestMacKeyUrl); 51 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestMacKeyUrl);
52 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, 52 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest,
53 TestSafeBrowsingReportUrl); 53 TestSafeBrowsingHitUrl);
54 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest,
55 TestMalwareDetailsUrl);
54 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestNextChunkUrl); 56 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestNextChunkUrl);
55 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestUpdateUrl); 57 FRIEND_TEST_ALL_PREFIXES(SafeBrowsingProtocolManagerTest, TestUpdateUrl);
56 friend class SafeBrowsingServiceTest; 58 friend class SafeBrowsingServiceTest;
57 59
58 public: 60 public:
59 // Constructs a SafeBrowsingProtocolManager for |sb_service| that issues 61 // Constructs a SafeBrowsingProtocolManager for |sb_service| that issues
60 // network requests using |request_context_getter|. When |disable_auto_update| 62 // network requests using |request_context_getter|. When |disable_auto_update|
61 // is true, protocol manager won't schedule next update until 63 // is true, protocol manager won't schedule next update until
62 // ForceScheduleNextUpdate is called. 64 // ForceScheduleNextUpdate is called.
63 SafeBrowsingProtocolManager(SafeBrowsingService* sb_service, 65 SafeBrowsingProtocolManager(SafeBrowsingService* sb_service,
64 const std::string& client_name, 66 const std::string& client_name,
65 const std::string& client_key, 67 const std::string& client_key,
66 const std::string& wrapped_key, 68 const std::string& wrapped_key,
67 URLRequestContextGetter* request_context_getter, 69 URLRequestContextGetter* request_context_getter,
68 const std::string& info_url_prefix, 70 const std::string& http_url_prefix,
69 const std::string& mackey_url_prefix, 71 const std::string& https_url_prefix,
70 bool disable_auto_update); 72 bool disable_auto_update);
71 virtual ~SafeBrowsingProtocolManager(); 73 virtual ~SafeBrowsingProtocolManager();
72 74
73 // Sets up the update schedule and internal state for making periodic requests 75 // Sets up the update schedule and internal state for making periodic requests
74 // of the SafeBrowsing service. 76 // of the SafeBrowsing service.
75 void Initialize(); 77 void Initialize();
76 78
77 // URLFetcher::Delegate interface. 79 // URLFetcher::Delegate interface.
78 virtual void OnURLFetchComplete(const URLFetcher* source, 80 virtual void OnURLFetchComplete(const URLFetcher* source,
79 const GURL& url, 81 const GURL& url,
(...skipping 30 matching lines...) Expand all
110 112
111 // For UMA users we report to Google when a SafeBrowsing interstitial is shown 113 // For UMA users we report to Google when a SafeBrowsing interstitial is shown
112 // to the user. We assume that the threat type is either URL_MALWARE or 114 // to the user. We assume that the threat type is either URL_MALWARE or
113 // URL_PHISHING. 115 // URL_PHISHING.
114 void ReportSafeBrowsingHit(const GURL& malicious_url, 116 void ReportSafeBrowsingHit(const GURL& malicious_url,
115 const GURL& page_url, 117 const GURL& page_url,
116 const GURL& referrer_url, 118 const GURL& referrer_url,
117 bool is_subresource, 119 bool is_subresource,
118 SafeBrowsingService::UrlCheckResult threat_type); 120 SafeBrowsingService::UrlCheckResult threat_type);
119 121
122 // Users can opt-in on the SafeBrowsing interstitial to send detailed
123 // malware reports. |report| is the serialized report.
124 void ReportMalwareDetails(const std::string& report);
120 125
121 // Setter for additional_query_. To make sure the additional_query_ won't 126 // Setter for additional_query_. To make sure the additional_query_ won't
122 // be changed in the middle of an update, caller (e.g.: SafeBrowsingService) 127 // be changed in the middle of an update, caller (e.g.: SafeBrowsingService)
123 // should call this after callbacks triggered in UpdateFinished() or before 128 // should call this after callbacks triggered in UpdateFinished() or before
124 // IssueUpdateRequest(). 129 // IssueUpdateRequest().
125 void set_additional_query(const std::string& query) { 130 void set_additional_query(const std::string& query) {
126 additional_query_ = query; 131 additional_query_ = query;
127 } 132 }
128 const std::string& additional_query() const { 133 const std::string& additional_query() const {
129 return additional_query_; 134 return additional_query_;
(...skipping 21 matching lines...) Expand all
151 const std::string& additional_query); 156 const std::string& additional_query);
152 157
153 // Generates Update URL for querying about the latest set of chunk updates. 158 // Generates Update URL for querying about the latest set of chunk updates.
154 // Append "wrkey=xxx" to the URL when |use_mac| is true. 159 // Append "wrkey=xxx" to the URL when |use_mac| is true.
155 GURL UpdateUrl(bool use_mac) const; 160 GURL UpdateUrl(bool use_mac) const;
156 // Generates GetHash request URL for retrieving full hashes. 161 // Generates GetHash request URL for retrieving full hashes.
157 // Append "wrkey=xxx" to the URL when |use_mac| is true. 162 // Append "wrkey=xxx" to the URL when |use_mac| is true.
158 GURL GetHashUrl(bool use_mac) const; 163 GURL GetHashUrl(bool use_mac) const;
159 // Generates new MAC client key request URL. 164 // Generates new MAC client key request URL.
160 GURL MacKeyUrl() const; 165 GURL MacKeyUrl() const;
161 // Generates URL for reporting malicious pages. 166 // Generates URL for reporting safe browsing hits for UMA users.
162 GURL SafeBrowsingReportUrl( 167 GURL SafeBrowsingHitUrl(
163 const GURL& malicious_url, const GURL& page_url, const GURL& referrer_url, 168 const GURL& malicious_url, const GURL& page_url, const GURL& referrer_url,
164 bool is_subresource, 169 bool is_subresource,
165 SafeBrowsingService::UrlCheckResult threat_type) const; 170 SafeBrowsingService::UrlCheckResult threat_type) const;
171 // Generates URL for reporting malware details for users who opt-in.
172 GURL MalwareDetailsUrl() const;
173
166 // Composes a ChunkUrl based on input string. 174 // Composes a ChunkUrl based on input string.
167 GURL NextChunkUrl(const std::string& input) const; 175 GURL NextChunkUrl(const std::string& input) const;
168 176
169 // Returns the time (in milliseconds) for the next update request. If 177 // Returns the time (in milliseconds) for the next update request. If
170 // 'back_off' is true, the time returned will increment an error count and 178 // 'back_off' is true, the time returned will increment an error count and
171 // return the appriate next time (see ScheduleNextUpdate below). 179 // return the appriate next time (see ScheduleNextUpdate below).
172 int GetNextUpdateTime(bool back_off); 180 int GetNextUpdateTime(bool back_off);
173 181
174 // Worker function for calculating GetHash and Update backoff times (in 182 // Worker function for calculating GetHash and Update backoff times (in
175 // seconds). 'Multiplier' is doubled for each consecutive error between the 183 // seconds). 'Multiplier' is doubled for each consecutive error between the
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 // Current product version sent in each request. 298 // Current product version sent in each request.
291 std::string version_; 299 std::string version_;
292 300
293 // Used for measuring chunk request latency. 301 // Used for measuring chunk request latency.
294 base::Time chunk_request_start_; 302 base::Time chunk_request_start_;
295 303
296 // Tracks the size of each update (in bytes). 304 // Tracks the size of each update (in bytes).
297 int update_size_; 305 int update_size_;
298 306
299 // Track outstanding SafeBrowsing report fetchers for clean up. 307 // Track outstanding SafeBrowsing report fetchers for clean up.
308 // We add both "hit" and "detail" fetchers in this set.
300 std::set<const URLFetcher*> safebrowsing_reports_; 309 std::set<const URLFetcher*> safebrowsing_reports_;
301 310
302 // The safe browsing client name sent in each request. 311 // The safe browsing client name sent in each request.
303 std::string client_name_; 312 std::string client_name_;
304 313
305 // A string that is appended to the end of URLs for download, gethash, 314 // A string that is appended to the end of URLs for download, gethash,
306 // newkey, malware report and chunk update requests. 315 // newkey, safebrowsing hits and chunk update requests.
307 std::string additional_query_; 316 std::string additional_query_;
308 317
309 // The context we use to issue network requests. 318 // The context we use to issue network requests.
310 scoped_refptr<URLRequestContextGetter> request_context_getter_; 319 scoped_refptr<URLRequestContextGetter> request_context_getter_;
311 320
312 // URL prefix where browser fetches safebrowsing chunk updates, hashes, and 321 // URL prefix where browser fetches safebrowsing chunk updates, hashes, and
313 // reports malware. 322 // reports hits to the safebrowsing list for UMA users.
314 std::string info_url_prefix_; 323 std::string http_url_prefix_;
315 324
316 // URL prefix where browser fetches MAC client key. 325 // URL prefix where browser fetches MAC client key, and reports detailed
317 std::string mackey_url_prefix_; 326 // malware reports for users who opt-in.
327 std::string https_url_prefix_;
318 328
319 // When true, protocol manager will not start an update unless 329 // When true, protocol manager will not start an update unless
320 // ForceScheduleNextUpdate() is called. This is set for testing purpose. 330 // ForceScheduleNextUpdate() is called. This is set for testing purpose.
321 bool disable_auto_update_; 331 bool disable_auto_update_;
322 332
323 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingProtocolManager); 333 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingProtocolManager);
324 }; 334 };
325 335
326 #endif // CHROME_BROWSER_SAFE_BROWSING_PROTOCOL_MANAGER_H_ 336 #endif // CHROME_BROWSER_SAFE_BROWSING_PROTOCOL_MANAGER_H_
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/malware_details_unittest.cc ('k') | chrome/browser/safe_browsing/protocol_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698