Skip to content

Commit 4666911

Browse files
committed
code review: various fixes
- Ensure REFERER spoofing is always reported in logger - Fixed possible exception thrown when asynchronously reporting cookies
1 parent 18ecb90 commit 4666911

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

src/js/background.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ return {
237237
cookieRemovedCounter: 0,
238238
localStorageRemovedCounter: 0,
239239
cookieHeaderFoiledCounter: 0,
240-
refererHeaderFoiledCounter: 0,
241240
hyperlinkAuditingFoiledCounter: 0,
242241
browserCacheClearedCounter: 0,
243242
storageUsed: 0,

src/js/cookies.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ var recordPageCookie = (function() {
209209
if ( pageStore.tabId === '' ) { continue; }
210210
for ( let cookieKey of qentry[1] ) {
211211
let cookieEntry = cookieDict.get(cookieKey);
212+
if ( cookieEntry === undefined ) { continue; }
212213
let block = µm.mustBlock(
213214
pageStore.pageHostname,
214215
cookieEntry.hostname,

src/js/pagestats.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ PageStore.prototype = {
123123
this.distinctRequestCount = 0;
124124
this.perLoadAllowedRequestCount = 0;
125125
this.perLoadBlockedRequestCount = 0;
126+
this.perLoadBlockedReferrerCount = 0;
126127
this.has3pReferrer = false;
127128
this.hasMixedContent = false;
128129
this.hasNoscriptTags = false;

src/js/traffic.js

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ var onBeforeRequestHandler = function(details) {
182182
// Sanitize outgoing headers as per user settings.
183183

184184
var onBeforeSendHeadersHandler = function(details) {
185-
var µm = µMatrix,
185+
let µm = µMatrix,
186186
µmuri = µm.URI,
187187
requestURL = details.url,
188188
requestScheme = µmuri.schemeFromURI(requestURL);
@@ -197,11 +197,10 @@ var onBeforeSendHeadersHandler = function(details) {
197197
// to scope on unknown scheme? Etc.
198198
// https://github.com/gorhill/httpswitchboard/issues/191
199199
// https://github.com/gorhill/httpswitchboard/issues/91#issuecomment-37180275
200-
var tabId = details.tabId,
200+
let tabId = details.tabId,
201201
pageStore = µm.mustPageStoreFromTabId(tabId),
202202
requestType = requestTypeNormalizer[details.type] || 'other',
203-
requestHeaders = details.requestHeaders,
204-
headerIndex, headerValue;
203+
requestHeaders = details.requestHeaders;
205204

206205
// https://github.com/gorhill/httpswitchboard/issues/342
207206
// Is this hyperlink auditing?
@@ -224,9 +223,9 @@ var onBeforeSendHeadersHandler = function(details) {
224223
// With hyperlink-auditing, removing header(s) is pointless, the whole
225224
// request must be cancelled.
226225

227-
headerIndex = headerIndexFromName('ping-to', requestHeaders);
226+
let headerIndex = headerIndexFromName('ping-to', requestHeaders);
228227
if ( headerIndex !== -1 ) {
229-
headerValue = requestHeaders[headerIndex].value;
228+
let headerValue = requestHeaders[headerIndex].value;
230229
if ( headerValue !== '' ) {
231230
var block = µm.userSettings.processHyperlinkAuditing;
232231
pageStore.recordRequest('other', requestURL + '{Ping-To:' + headerValue + '}', block);
@@ -241,7 +240,7 @@ var onBeforeSendHeadersHandler = function(details) {
241240
// If we reach this point, request is not blocked, so what is left to do
242241
// is to sanitize headers.
243242

244-
var rootHostname = pageStore.pageHostname,
243+
let rootHostname = pageStore.pageHostname,
245244
requestHostname = µmuri.hostnameFromURI(requestURL),
246245
modified = false;
247246

@@ -253,7 +252,7 @@ var onBeforeSendHeadersHandler = function(details) {
253252
µm.mustBlock(rootHostname, requestHostname, 'cookie')
254253
) {
255254
modified = true;
256-
headerValue = requestHeaders[headerIndex].value;
255+
let headerValue = requestHeaders[headerIndex].value;
257256
requestHeaders.splice(headerIndex, 1);
258257
µm.cookieHeaderFoiledCounter++;
259258
if ( requestType === 'doc' ) {
@@ -284,28 +283,28 @@ var onBeforeSendHeadersHandler = function(details) {
284283

285284
headerIndex = headerIndexFromName('referer', requestHeaders);
286285
if ( headerIndex !== -1 ) {
287-
headerValue = requestHeaders[headerIndex].value;
286+
let headerValue = requestHeaders[headerIndex].value;
288287
if ( headerValue !== '' ) {
289-
var toDomain = µmuri.domainFromHostname(requestHostname);
288+
let toDomain = µmuri.domainFromHostname(requestHostname);
290289
if ( toDomain !== '' && toDomain !== µmuri.domainFromURI(headerValue) ) {
291290
pageStore.has3pReferrer = true;
292291
if ( µm.tMatrix.evaluateSwitchZ('referrer-spoof', rootHostname) ) {
293292
modified = true;
294-
var newValue;
293+
let newValue;
295294
if ( details.method === 'GET' ) {
296295
newValue = requestHeaders[headerIndex].value =
297296
requestScheme + '://' + requestHostname + '/';
298297
} else {
299298
requestHeaders.splice(headerIndex, 1);
300299
}
301-
µm.refererHeaderFoiledCounter++;
302-
if ( requestType === 'doc' ) {
303-
pageStore.perLoadBlockedRequestCount++;
300+
if ( pageStore.perLoadBlockedReferrerCount === 0 ) {
301+
pageStore.perLoadBlockedRequestCount += 1;
304302
µm.logger.writeOne(tabId, 'net', '', headerValue, 'REFERER', true);
305303
if ( newValue !== undefined ) {
306304
µm.logger.writeOne(tabId, 'net', '', newValue, 'REFERER', false);
307305
}
308306
}
307+
pageStore.perLoadBlockedReferrerCount += 1;
309308
}
310309
}
311310
}

0 commit comments

Comments
 (0)