Skip to content

Commit c2a21c2

Browse files
author
Julio Farah
authored
Fix XSS based prototype solution on Segment.io (#582)
* Fix XSS based prototype solution on Segment.io * remove includes polyfill * remove polyfills and arrow func * 4.4.2.-beta.1 * bring ads * remove beta tag
1 parent cd7fba4 commit c2a21c2

File tree

5 files changed

+55
-21
lines changed

5 files changed

+55
-21
lines changed

Diff for: integrations/segmentio/lib/ads.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
function ads(query) {
2+
var queryIds = {
3+
btid: 'dataxu',
4+
urid: 'millennial-media',
5+
}
6+
7+
if (query.lastIndexOf('?', 0) === 0) {
8+
query = query.substring(1)
9+
}
10+
11+
query = query.replace(/\?/g, '&')
12+
13+
var parts = query.split('&')
14+
15+
for (var i = 0; i < parts.length; i++) {
16+
var k = parts[i].split('=')[0]
17+
var v = parts[i].split('=')[1]
18+
19+
if (queryIds[k]) {
20+
return {
21+
id: v,
22+
type: queryIds[k],
23+
}
24+
}
25+
}
26+
}
27+
28+
module.exports = ads

Diff for: integrations/segmentio/lib/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Module dependencies.
55
*/
66

7-
var ads = require('@segment/ad-params');
7+
var ads = require('./ads');
88
var clone = require('component-clone');
99
var cookie = require('component-cookie');
1010
var extend = require('@ndhoule/extend');
@@ -15,7 +15,7 @@ var localstorage = require('yields-store');
1515
var protocol = require('@segment/protocol');
1616
var send = require('@segment/send-json');
1717
var topDomain = require('@segment/top-domain');
18-
var utm = require('@segment/utm-params');
18+
var utm = require('./utm');
1919
var uuid = require('uuid').v4;
2020
var Queue = require('@segment/localstorage-retry');
2121

Diff for: integrations/segmentio/lib/utm.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function utm(query) {
2+
if (query.lastIndexOf('?', 0) === 0) {
3+
query = query.substring(1)
4+
}
5+
6+
query = query.replace(/\?/g, '&')
7+
8+
return query.split('&').reduce(function(acc, str) {
9+
var k = str.split('=')[0]
10+
var v = str.split('=')[1]
11+
12+
if (k.indexOf('utm_') !== -1) {
13+
var utmParam = k.substr(4)
14+
if (utmParam === 'campaign') {
15+
utmParam = 'name'
16+
}
17+
acc[utmParam] = v
18+
}
19+
return acc
20+
})
21+
}
22+
23+
module.exports = utm

Diff for: integrations/segmentio/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@segment/analytics.js-integration-segmentio",
33
"description": "The Segmentio analytics.js integration.",
4-
"version": "4.4.1",
4+
"version": "4.4.2",
55
"keywords": [
66
"analytics.js",
77
"analytics.js-integration",
@@ -26,13 +26,11 @@
2626
"dependencies": {
2727
"@ndhoule/extend": "^2.0.0",
2828
"@ndhoule/keys": "^2.0.0",
29-
"@segment/ad-params": "^1.0.0",
3029
"@segment/analytics.js-integration": "^2.1.0",
3130
"@segment/localstorage-retry": "^1.2.2",
3231
"@segment/protocol": "^1.0.0",
3332
"@segment/send-json": "^3.0.0",
3433
"@segment/top-domain": "^3.0.0",
35-
"@segment/utm-params": "^2.0.0",
3634
"component-clone": "^0.2.2",
3735
"component-cookie": "^1.1.2",
3836
"component-type": "^1.2.1",

Diff for: yarn.lock

+1-16
Original file line numberDiff line numberDiff line change
@@ -1787,13 +1787,6 @@
17871787
dependencies:
17881788
any-observable "^0.3.0"
17891789

1790-
"@segment/ad-params@^1.0.0":
1791-
version "1.0.0"
1792-
resolved "https://registry.yarnpkg.com/@segment/ad-params/-/ad-params-1.0.0.tgz#e02ded70a7f8db952af03c21208f47201b86bc95"
1793-
integrity sha1-4C3tcKf425Uq8DwhII9HIBuGvJU=
1794-
dependencies:
1795-
component-querystring "^2.0.0"
1796-
17971790
"@segment/alias@^1.0.0", "@segment/alias@^1.0.1", "@segment/alias@^1.0.2":
17981791
version "1.0.2"
17991792
resolved "https://registry.yarnpkg.com/@segment/alias/-/alias-1.0.2.tgz#1ce0d2a28df59706a1b5c92fb99c0c48adc22ec1"
@@ -2280,14 +2273,6 @@
22802273
resolved "https://registry.yarnpkg.com/@segment/trample/-/trample-0.2.0.tgz#5b141159f67b06efaa295d2ebe240b51096134c5"
22812274
integrity sha1-WxQRWfZ7Bu+qKV0uviQLUQlhNMU=
22822275

2283-
"@segment/utm-params@^2.0.0":
2284-
version "2.0.0"
2285-
resolved "https://registry.yarnpkg.com/@segment/utm-params/-/utm-params-2.0.0.tgz#fea3c8a92bfba0d69e861fb3b26d7d882f139334"
2286-
integrity sha1-/qPIqSv7oNaehh+zsm19iC8TkzQ=
2287-
dependencies:
2288-
"@ndhoule/foldl" "^2.0.1"
2289-
component-querystring "^2.0.0"
2290-
22912276
"@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.4.0":
22922277
version "1.4.0"
22932278
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78"
@@ -6526,7 +6511,7 @@ [email protected]:
65266511
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
65276512
integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=
65286513

6529-
[email protected], extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.2:
6514+
[email protected], extend@^3.0.0, extend@^3.0.2, extend@~3.0.2:
65306515
version "3.0.2"
65316516
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
65326517
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==

0 commit comments

Comments
 (0)