Skip to content
This repository was archived by the owner on Sep 3, 2022. It is now read-only.

Commit 16aad4c

Browse files
committed
Fix Potential DOM-based XSS via prototype pollution
1 parent 592dc1d commit 16aad4c

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

lib/analytics.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ var metrics = require('./metrics');
3434
var debug = require('debug');
3535
var defaults = require('@ndhoule/defaults');
3636
var each = require('./utils/each');
37-
var foldl = require('@ndhoule/foldl');
3837
var group = require('./group');
3938
var is = require('is');
4039
var isMeta = require('@segment/is-meta');
@@ -46,7 +45,7 @@ var on = require('component-event').bind;
4645
var pageDefaults = require('./pageDefaults');
4746
var pick = require('@ndhoule/pick');
4847
var prevent = require('@segment/prevent-default');
49-
var querystring = require('component-querystring');
48+
var url = require('component-url');
5049
var store = require('./store');
5150
var user = require('./user');
5251
var type = require('component-type');
@@ -918,7 +917,14 @@ Analytics.prototype.reset = function() {
918917

919918
Analytics.prototype._parseQuery = function(query: string): SegmentAnalytics {
920919
// Parse querystring to an object
921-
var q = querystring.parse(query);
920+
const parsed = url.parse(query);
921+
922+
const q = parsed.query.split('&').reduce((acc, str) => {
923+
const [k, v] = str.split('=');
924+
acc[k] = decodeURI(v).replace('+', ' ');
925+
return acc;
926+
}, {});
927+
922928
// Create traits and properties objects, populate from querysting params
923929
var traits = pickPrefix('ajs_trait_', q);
924930
var props = pickPrefix('ajs_prop_', q);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@segment/analytics.js-core",
33
"author": "Segment <[email protected]>",
4-
"version": "4.0.4",
4+
"version": "4.1.8",
55
"description": "The hassle-free way to integrate analytics into any web application.",
66
"types": "lib/index.d.ts",
77
"keywords": [

0 commit comments

Comments
 (0)