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

Side by Side Diff: chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc

Issue 21170004: Store and return urls instead of hosts for the malware IP matching. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: some nit fix on int type Created 7 years, 4 months 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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/safe_browsing/browser_feature_extractor.h" 5 #include "chrome/browser/safe_browsing/browser_feature_extractor.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 request.set_url("http://www.baz.com/"); 473 request.set_url("http://www.baz.com/");
474 request.set_client_score(0.5); 474 request.set_client_score(0.5);
475 redirect_chain.clear(); 475 redirect_chain.clear();
476 redirect_chain.push_back(GURL("https://bankofamerica.com")); 476 redirect_chain.push_back(GURL("https://bankofamerica.com"));
477 redirect_chain.push_back(GURL("http://www.baz.com/")); 477 redirect_chain.push_back(GURL("http://www.baz.com/"));
478 SetRedirectChain(redirect_chain, true); 478 SetRedirectChain(redirect_chain, true);
479 NavigateAndCommit(GURL("http://www.baz.com"), 479 NavigateAndCommit(GURL("http://www.baz.com"),
480 GURL("https://bankofamerica.com"), 480 GURL("https://bankofamerica.com"),
481 content::PAGE_TRANSITION_GENERATED); 481 content::PAGE_TRANSITION_GENERATED);
482 482
483 std::set<std::string> hosts; 483 std::set<std::string> urls;
484 hosts.insert("test.com"); 484 urls.insert("http://test.com");
485 browse_info_->ips.insert(std::make_pair("193.5.163.8", hosts)); 485 browse_info_->ips.insert(std::make_pair("193.5.163.8", urls));
486 browse_info_->ips.insert(std::make_pair("23.94.78.1", hosts)); 486 browse_info_->ips.insert(std::make_pair("23.94.78.1", urls));
487 EXPECT_CALL(*service_, IsBadIpAddress("193.5.163.8")).WillOnce(Return(true)); 487 EXPECT_CALL(*service_, IsBadIpAddress("193.5.163.8")).WillOnce(Return(true));
488 EXPECT_CALL(*service_, IsBadIpAddress("23.94.78.1")).WillOnce(Return(false)); 488 EXPECT_CALL(*service_, IsBadIpAddress("23.94.78.1")).WillOnce(Return(false));
489 489
490 EXPECT_TRUE(ExtractFeatures(&request)); 490 EXPECT_TRUE(ExtractFeatures(&request));
491 features.clear(); 491 features.clear();
492 GetFeatureMap(request, &features); 492 GetFeatureMap(request, &features);
493 493
494 EXPECT_EQ(1.0, 494 EXPECT_EQ(1.0,
495 features[base::StringPrintf("%s[0]=%s", 495 features[base::StringPrintf("%s[0]=%s",
496 features::kRedirect, 496 features::kRedirect,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 features::kSafeBrowsingOriginalUrl, 537 features::kSafeBrowsingOriginalUrl,
538 "http://www.good.com/"))); 538 "http://www.good.com/")));
539 EXPECT_DOUBLE_EQ(1.0, features[features::kSafeBrowsingIsSubresource]); 539 EXPECT_DOUBLE_EQ(1.0, features[features::kSafeBrowsingIsSubresource]);
540 EXPECT_DOUBLE_EQ(2.0, features[features::kSafeBrowsingThreatType]); 540 EXPECT_DOUBLE_EQ(2.0, features[features::kSafeBrowsingThreatType]);
541 } 541 }
542 542
543 TEST_F(BrowserFeatureExtractorTest, MalwareFeatures) { 543 TEST_F(BrowserFeatureExtractorTest, MalwareFeatures) {
544 ClientMalwareRequest request; 544 ClientMalwareRequest request;
545 request.set_url("http://www.foo.com/"); 545 request.set_url("http://www.foo.com/");
546 546
547 std::set<std::string> bad_hosts; 547 std::set<std::string> bad_urls;
548 bad_hosts.insert("bad.com"); 548 bad_urls.insert("http://bad.com");
549 bad_hosts.insert("evil.com"); 549 bad_urls.insert("http://evil.com");
550 browse_info_->ips.insert(std::make_pair("193.5.163.8", bad_hosts)); 550 browse_info_->ips.insert(std::make_pair("193.5.163.8", bad_urls));
551 browse_info_->ips.insert(std::make_pair("92.92.92.92", bad_hosts)); 551 browse_info_->ips.insert(std::make_pair("92.92.92.92", bad_urls));
552 std::set<std::string> good_hosts; 552 std::set<std::string> good_urls;
553 good_hosts.insert("ok.com"); 553 good_urls.insert("http://ok.com");
554 browse_info_->ips.insert(std::make_pair("23.94.78.1", good_hosts)); 554 browse_info_->ips.insert(std::make_pair("23.94.78.1", good_urls));
555 EXPECT_CALL(*service_, IsBadIpAddress("193.5.163.8")).WillOnce(Return(true)); 555 EXPECT_CALL(*service_, IsBadIpAddress("193.5.163.8")).WillOnce(Return(true));
556 EXPECT_CALL(*service_, IsBadIpAddress("92.92.92.92")).WillOnce(Return(true)); 556 EXPECT_CALL(*service_, IsBadIpAddress("92.92.92.92")).WillOnce(Return(true));
557 EXPECT_CALL(*service_, IsBadIpAddress("23.94.78.1")).WillOnce(Return(false)); 557 EXPECT_CALL(*service_, IsBadIpAddress("23.94.78.1")).WillOnce(Return(false));
558 558
559 ExtractMalwareFeatures(&request); 559 ExtractMalwareFeatures(&request);
560 std::map<std::string, std::set<std::string> > features; 560 std::map<std::string, std::set<std::string> > features;
561 GetMalwareFeatureMap(request, &features); 561 GetMalwareFeatureMap(request, &features);
562 562
563 EXPECT_EQ(2U, features.size()); 563 EXPECT_EQ(2U, features.size());
564 std::string feature_name = base::StringPrintf("%s%s", features::kBadIpFetch, 564 std::string feature_name = base::StringPrintf("%s%s", features::kBadIpFetch,
565 "193.5.163.8"); 565 "193.5.163.8");
566 EXPECT_TRUE(features.count(feature_name)); 566 EXPECT_TRUE(features.count(feature_name));
567 std::set<std::string> hosts = features[feature_name]; 567 std::set<std::string> urls = features[feature_name];
568 EXPECT_EQ(2U, hosts.size()); 568 EXPECT_EQ(2U, urls.size());
569 EXPECT_TRUE(hosts.find("bad.com") != hosts.end()); 569 EXPECT_TRUE(urls.find("http://bad.com") != urls.end());
570 EXPECT_TRUE(hosts.find("evil.com") != hosts.end()); 570 EXPECT_TRUE(urls.find("http://evil.com") != urls.end());
571 feature_name = base::StringPrintf("%s%s", features::kBadIpFetch, 571 feature_name = base::StringPrintf("%s%s", features::kBadIpFetch,
572 "92.92.92.92"); 572 "92.92.92.92");
573 EXPECT_TRUE(features.count(feature_name)); 573 EXPECT_TRUE(features.count(feature_name));
574 hosts = features[feature_name]; 574 urls = features[feature_name];
575 EXPECT_EQ(2U, hosts.size()); 575 EXPECT_EQ(2U, urls.size());
576 EXPECT_TRUE(hosts.find("bad.com") != hosts.end()); 576 EXPECT_TRUE(urls.find("http://bad.com") != urls.end());
577 EXPECT_TRUE(hosts.find("evil.com") != hosts.end()); 577 EXPECT_TRUE(urls.find("http://evil.com") != urls.end());
578 } 578 }
579
580 TEST_F(BrowserFeatureExtractorTest, MalwareFeatures_ExceedLimit) {
581 ClientMalwareRequest request;
582 request.set_url("http://www.foo.com/");
583
584 std::set<std::string> bad_urls;
585 bad_urls.insert("http://bad.com");
586 std::vector<std::string> ips;
587 for (int i = 0; i < 7; ++i) { // Add 7 ips
588 std::string ip = base::StringPrintf("%d.%d.%d.%d", i, i, i, i);
589 ips.push_back(ip);
590 browse_info_->ips.insert(std::make_pair(ip, bad_urls));
591 }
592
593 // First ip is good, then check the next 5 bad ips.
594 // Not check the 7th as reached limit.
595 EXPECT_CALL(*service_, IsBadIpAddress(ips[0])).WillOnce(Return(false));
596 for (int i = 1; i < 6; ++i) {
597 EXPECT_CALL(*service_, IsBadIpAddress(ips[i])).WillOnce(Return(true));
598 }
599
600 ExtractMalwareFeatures(&request);
601 std::map<std::string, std::set<std::string> > features;
602 GetMalwareFeatureMap(request, &features);
603
604 // Only keep 5 ips.
605 EXPECT_EQ(5U, features.size());
606 }
607
579 } // namespace safe_browsing 608 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/browser_feature_extractor.cc ('k') | chrome/browser/safe_browsing/client_side_detection_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698