Skip to content

Commit 2d54f91

Browse files
committed
Reject referral promo header names unless whitelisted
Fix brave/brave-browser#3301 Currently the only whitelisted header is 'X-Brave-Partner'.
1 parent c3b61b0 commit 2d54f91

4 files changed

+12
-2
lines changed

browser/net/brave_referrals_network_delegate_helper.cc

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "base/values.h"
88
#include "brave/components/brave_referrals/browser/brave_referrals_service.h"
9+
#include "brave/common/network_constants.h"
910
#include "chrome/browser/browser_process.h"
1011
#include "content/public/browser/browser_thread.h"
1112
#include "extensions/common/url_pattern.h"
@@ -27,7 +28,9 @@ int OnBeforeStartTransaction_ReferralsWork(
2728
*ctx->referral_headers_list, &request_headers_dict, request->url()))
2829
return net::OK;
2930
for (const auto& it : request_headers_dict->DictItems()) {
30-
headers->SetHeader(it.first, it.second.GetString());
31+
if (it.first == kBravePartnerHeader) {
32+
headers->SetHeader(it.first, it.second.GetString());
33+
}
3134
}
3235
return net::OK;
3336
}

browser/net/brave_referrals_network_delegate_helper_unittest.cc

+6-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ const char kTestReferralHeaders[] = R"(
2121
"barrons.com"
2222
],
2323
"headers": {
24-
"X-Brave-Partner":"dowjones"
24+
"X-Brave-Partner":"dowjones",
25+
"X-Invalid": "test"
2526
},
2627
"cookieNames": [
2728
],
@@ -89,6 +90,10 @@ TEST_F(BraveReferralsNetworkDelegateHelperTest, ReplaceHeadersForMatchingDomain)
8990
headers.GetHeader("X-Brave-Partner", &partner_header);
9091
EXPECT_EQ(partner_header, "dowjones");
9192

93+
std::string invalid_partner_header;
94+
EXPECT_EQ(headers.GetHeader("X-Invalid", &invalid_partner_header), false);
95+
EXPECT_EQ(invalid_partner_header, "");
96+
9297
EXPECT_EQ(ret, net::OK);
9398
}
9499

common/network_constants.cc

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const char kCookieHeader[] = "Cookie";
2626
// Intentional misspelling on referrer to match HTTP spec
2727
const char kRefererHeader[] = "Referer";
2828
const char kUserAgentHeader[] = "User-Agent";
29+
const char kBravePartnerHeader[] = "X-Brave-Partner";
2930

3031
const char kBittorrentMimeType[] = "application/x-bittorrent";
3132
const char kOctetStreamMimeType[] = "application/octet-stream";

common/network_constants.h

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ extern const char kTwitterRedirectURL[];
2424
extern const char kCookieHeader[];
2525
extern const char kRefererHeader[];
2626
extern const char kUserAgentHeader[];
27+
extern const char kBravePartnerHeader[];
2728

2829
extern const char kBittorrentMimeType[];
2930
extern const char kOctetStreamMimeType[];

0 commit comments

Comments
 (0)