@formo/analytics-react-native 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/lib/commonjs/lib/event/EventQueue.js +367 -57
  2. package/lib/commonjs/lib/event/EventQueue.js.map +1 -1
  3. package/lib/commonjs/utils/sanitize.js +260 -0
  4. package/lib/commonjs/utils/sanitize.js.map +1 -0
  5. package/lib/commonjs/utils/trafficSource.js +10 -1
  6. package/lib/commonjs/utils/trafficSource.js.map +1 -1
  7. package/lib/commonjs/version.js +1 -1
  8. package/lib/module/lib/event/EventQueue.js +368 -57
  9. package/lib/module/lib/event/EventQueue.js.map +1 -1
  10. package/lib/module/utils/sanitize.js +253 -0
  11. package/lib/module/utils/sanitize.js.map +1 -0
  12. package/lib/module/utils/trafficSource.js +10 -1
  13. package/lib/module/utils/trafficSource.js.map +1 -1
  14. package/lib/module/version.js +1 -1
  15. package/lib/typescript/commonjs/lib/event/EventQueue.d.ts +55 -0
  16. package/lib/typescript/commonjs/lib/event/EventQueue.d.ts.map +1 -1
  17. package/lib/typescript/commonjs/utils/sanitize.d.ts +31 -0
  18. package/lib/typescript/commonjs/utils/sanitize.d.ts.map +1 -0
  19. package/lib/typescript/commonjs/utils/trafficSource.d.ts +3 -0
  20. package/lib/typescript/commonjs/utils/trafficSource.d.ts.map +1 -1
  21. package/lib/typescript/commonjs/version.d.ts +1 -1
  22. package/lib/typescript/module/FormoAnalytics.d.ts +2 -2
  23. package/lib/typescript/module/FormoAnalytics.d.ts.map +1 -1
  24. package/lib/typescript/module/FormoAnalyticsProvider.d.ts +1 -1
  25. package/lib/typescript/module/FormoAnalyticsProvider.d.ts.map +1 -1
  26. package/lib/typescript/module/constants/index.d.ts +3 -3
  27. package/lib/typescript/module/constants/index.d.ts.map +1 -1
  28. package/lib/typescript/module/index.d.ts +5 -5
  29. package/lib/typescript/module/index.d.ts.map +1 -1
  30. package/lib/typescript/module/lib/event/EventFactory.d.ts +2 -2
  31. package/lib/typescript/module/lib/event/EventFactory.d.ts.map +1 -1
  32. package/lib/typescript/module/lib/event/EventManager.d.ts +2 -2
  33. package/lib/typescript/module/lib/event/EventManager.d.ts.map +1 -1
  34. package/lib/typescript/module/lib/event/EventQueue.d.ts +57 -2
  35. package/lib/typescript/module/lib/event/EventQueue.d.ts.map +1 -1
  36. package/lib/typescript/module/lib/event/index.d.ts +4 -4
  37. package/lib/typescript/module/lib/event/index.d.ts.map +1 -1
  38. package/lib/typescript/module/lib/event/types.d.ts +1 -1
  39. package/lib/typescript/module/lib/event/types.d.ts.map +1 -1
  40. package/lib/typescript/module/lib/session/index.d.ts +1 -1
  41. package/lib/typescript/module/lib/session/index.d.ts.map +1 -1
  42. package/lib/typescript/module/lib/storage/AsyncStorageAdapter.d.ts +2 -2
  43. package/lib/typescript/module/lib/storage/AsyncStorageAdapter.d.ts.map +1 -1
  44. package/lib/typescript/module/lib/storage/MemoryStorage.d.ts +1 -1
  45. package/lib/typescript/module/lib/storage/MemoryStorage.d.ts.map +1 -1
  46. package/lib/typescript/module/lib/storage/StorageBlueprint.d.ts +1 -1
  47. package/lib/typescript/module/lib/storage/StorageBlueprint.d.ts.map +1 -1
  48. package/lib/typescript/module/lib/storage/StorageManager.d.ts +1 -1
  49. package/lib/typescript/module/lib/storage/StorageManager.d.ts.map +1 -1
  50. package/lib/typescript/module/lib/storage/index.d.ts +4 -4
  51. package/lib/typescript/module/lib/storage/index.d.ts.map +1 -1
  52. package/lib/typescript/module/lib/wagmi/WagmiEventHandler.d.ts +2 -2
  53. package/lib/typescript/module/lib/wagmi/WagmiEventHandler.d.ts.map +1 -1
  54. package/lib/typescript/module/lib/wagmi/index.d.ts +2 -2
  55. package/lib/typescript/module/lib/wagmi/index.d.ts.map +1 -1
  56. package/lib/typescript/module/solana/address.d.ts +1 -1
  57. package/lib/typescript/module/solana/address.d.ts.map +1 -1
  58. package/lib/typescript/module/solana/index.d.ts +2 -2
  59. package/lib/typescript/module/solana/index.d.ts.map +1 -1
  60. package/lib/typescript/module/types/base.d.ts +3 -3
  61. package/lib/typescript/module/types/base.d.ts.map +1 -1
  62. package/lib/typescript/module/types/events.d.ts +2 -2
  63. package/lib/typescript/module/types/events.d.ts.map +1 -1
  64. package/lib/typescript/module/types/index.d.ts +2 -2
  65. package/lib/typescript/module/types/index.d.ts.map +1 -1
  66. package/lib/typescript/module/utils/index.d.ts +5 -5
  67. package/lib/typescript/module/utils/index.d.ts.map +1 -1
  68. package/lib/typescript/module/utils/sanitize.d.ts +31 -0
  69. package/lib/typescript/module/utils/sanitize.d.ts.map +1 -0
  70. package/lib/typescript/module/utils/trafficSource.d.ts +4 -1
  71. package/lib/typescript/module/utils/trafficSource.d.ts.map +1 -1
  72. package/lib/typescript/module/version.d.ts +1 -1
  73. package/package.json +2 -2
  74. package/src/lib/event/EventQueue.ts +402 -61
  75. package/src/utils/sanitize.ts +274 -0
  76. package/src/utils/trafficSource.ts +19 -1
  77. package/src/version.ts +1 -1
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.sanitizeUtm = exports.sanitizeTrafficSources = exports.sanitizeReferrer = exports.sanitizeRef = void 0;
7
+ /**
8
+ * Traffic-source value sanitization.
9
+ *
10
+ * Ported from the Formo web SDK, where vulnerability scanners (e.g. Acunetix)
11
+ * crawling customer sites injected XSS probes such as
12
+ * `javascript:domxssExecutionSink(1,"'\"><xsstag>()locxss")` or
13
+ * `<script>alert(1)</script>` into every query parameter. Without validation
14
+ * those payloads are captured verbatim as utm_* / ref values, persisted as
15
+ * sticky session traffic sources, and pollute attribution reporting.
16
+ *
17
+ * React Native has the same exposure through two attacker-reachable inputs:
18
+ *
19
+ * - Deep links handed to `setTrafficSourceFromUrl`. Anyone who can get a user
20
+ * to open `myapp://x?utm_source=<script>alert(1)</script>` controls the
21
+ * value verbatim, and it is persisted for the whole session.
22
+ * - The Android Play Install Referrer string, which is derived from the
23
+ * `referrer` parameter of a Play Store URL and is likewise attacker-supplied.
24
+ *
25
+ * Each field class gets the tightest rule its legitimate values allow:
26
+ *
27
+ * - Referral codes are short tokens; >99.5% of production values match the
28
+ * strict pattern and none of the remainder are legitimate (scanner
29
+ * payloads, mangled encodings, URLs glued to codes).
30
+ * - UTM values are free-form (spaces, unicode, `+` are legitimate), so they
31
+ * only reject markup/quote characters, dangerous URL schemes, control and
32
+ * zero-width characters, and absurd lengths.
33
+ * - `referrer` diverges from the web SDK, which leaves it untouched because
34
+ * there it is a browser-set `document.referrer` already handled by redactUrl.
35
+ * In React Native `referrer` holds the raw deep-link URL the attacker
36
+ * supplied, so sanitizing only the utm_ and ref fields would still let the
37
+ * payload through. It gets a URL-sized length budget and is checked both raw
38
+ * and percent-decoded — a URL encodes its payload, so a raw-only check would
39
+ * pass `?utm_source=%3Cscript%3E` straight through.
40
+ *
41
+ * Invalid values are dropped to "" — the same representation as "parameter
42
+ * absent" — rather than repaired, so a poisoned value can never be persisted
43
+ * or reported.
44
+ *
45
+ * The web SDK additionally sanitizes ad-platform click IDs (gclid, fbclid,
46
+ * ...). This SDK does not capture them, so that rule is intentionally absent;
47
+ * add it here alongside the capture if click IDs are ever supported.
48
+ */
49
+
50
+ const REF_PATTERN = /^[A-Za-z0-9._-]{1,64}$/;
51
+ const UTM_MAX_LENGTH = 255;
52
+
53
+ // URLs are legitimately much longer than a UTM value, but not unbounded —
54
+ // this is well above any real deep link and still bounds what gets persisted.
55
+ const REFERRER_MAX_LENGTH = 2_048;
56
+
57
+ // Markup/quote/backslash characters plus C0/C1 control characters and
58
+ // zero-width / bidi / BOM / replacement characters (mangled-encoding
59
+ // markers). Explicit ranges instead of \p{C} to avoid the `u`-flag
60
+ // property-escape requirement.
61
+ const FORBIDDEN_CHARS = /[<>"'`\\\u0000-\u001f\u007f-\u009f\u200b-\u200f\u2028-\u202e\u2060\ufeff\ufffd]/;
62
+
63
+ // Applied to the percent-DECODED form of a referrer. Narrower than the raw
64
+ // set on purpose: a decoded query value legitimately contains quotes and
65
+ // backslashes (`?q=%22running%20shoes%22`), and those are harmless in an
66
+ // analytics field. Markup and invisible characters are what indicate an
67
+ // injected payload rather than a real deep link.
68
+ const DECODED_FORBIDDEN_CHARS = /[<>\u0000-\u001f\u007f-\u009f\u200b-\u200f\u2028-\u202e\u2060\ufeff\ufffd]/;
69
+
70
+ // Values smuggling an executable/URL scheme, e.g. `javascript:alert(1)`.
71
+ const FORBIDDEN_SCHEME_PREFIX = /^\s*(javascript|data|vbscript):/i;
72
+
73
+ /**
74
+ * Whether a value smuggles a dangerous scheme, anywhere a URL parser would
75
+ * consider the start of a value.
76
+ *
77
+ * The pattern is anchored, so testing the string as a whole is not enough once
78
+ * decoding can reveal separators that were themselves encoded: with the `=` in
79
+ * `?utm_source%3Djavascript%253Aalert(1)` encoded, URLSearchParams reports one
80
+ * key that decodes to `utm_source=javascript:alert(1)`, which the anchored test
81
+ * never matches. Splitting on the separators after decoding puts the payload
82
+ * back at the start of a segment.
83
+ */
84
+ const hasForbiddenScheme = value => FORBIDDEN_SCHEME_PREFIX.test(value) || value.split(/[?&=#]/).some(segment => FORBIDDEN_SCHEME_PREFIX.test(segment));
85
+
86
+ /**
87
+ * Percent-decode one layer without ever throwing. `decodeURIComponent` rejects
88
+ * the entire string on a single malformed escape (a stray `%`), which would let
89
+ * `...%3Cscript%3E%` skip the decoded checks completely.
90
+ *
91
+ * Each *run* of consecutive escapes is decoded as a unit rather than byte by
92
+ * byte, because a multi-byte character spans several escapes: `%E3%80%80` is
93
+ * one ideographic space, and decoding `%E3` alone throws. Byte-wise decoding
94
+ * would therefore never produce the whitespace that lets `^\s*javascript:`
95
+ * match `%E3%80%80javascript%3Aalert(1)`. A run that is not valid UTF-8, and
96
+ * any stray `%`, is left as-is.
97
+ */
98
+ const decodeRun = run => {
99
+ try {
100
+ return decodeURIComponent(run);
101
+ } catch {
102
+ // One invalid byte anywhere in the run would otherwise blind the whole
103
+ // run — appending `%C0` next to `%3C` is enough to hide a `<`. Decode the
104
+ // largest valid group at each position instead, longest first so multi-byte
105
+ // sequences (up to four escapes) still group correctly, and pass through
106
+ // any escape that cannot be decoded at all.
107
+ const escapes = run.match(/%[0-9A-Fa-f]{2}/g) ?? [];
108
+ let out = "";
109
+ let i = 0;
110
+ while (i < escapes.length) {
111
+ let taken = 0;
112
+ for (let len = Math.min(4, escapes.length - i); len >= 1; len--) {
113
+ try {
114
+ out += decodeURIComponent(escapes.slice(i, i + len).join(""));
115
+ taken = len;
116
+ break;
117
+ } catch {
118
+ // Try a shorter group.
119
+ }
120
+ }
121
+ if (taken === 0) {
122
+ out += escapes[i];
123
+ taken = 1;
124
+ }
125
+ i += taken;
126
+ }
127
+ return out;
128
+ }
129
+ };
130
+ const decodeOnce = value => value.replace(/(?:%[0-9A-Fa-f]{2})+/g, decodeRun);
131
+
132
+ /**
133
+ * Decode to a fixed point, so a payload encoded any number of times
134
+ * (`%253Cscript%253E`, `%25252525253Cscript...`) is compared in a form the
135
+ * markup check can see.
136
+ *
137
+ * The bound is the input length rather than a fixed number of layers, because
138
+ * a fixed number is reachable: re-encoding `javascript:alert(1)` only grows the
139
+ * single `%` by two characters per layer, so 66 layers fit in 151 characters
140
+ * and any small constant can be encoded past. Every productive pass turns a
141
+ * three-character escape into one character, so a string of length n admits
142
+ * fewer than n productive passes — this bound is always sufficient and still
143
+ * guarantees termination.
144
+ */
145
+ const decodeDeep = value => {
146
+ let current = value;
147
+ for (let i = 0; i < value.length; i++) {
148
+ const next = decodeOnce(current);
149
+ if (next === current) break;
150
+ current = next;
151
+ }
152
+ return current;
153
+ };
154
+ const sanitizeRef = value => REF_PATTERN.test(value) ? value : "";
155
+
156
+ /**
157
+ * URLSearchParams has already decoded one layer by the time a UTM value gets
158
+ * here, so a payload encoded twice arrives still encoded:
159
+ * `utm_source=%253Cscript%253E` reads as the literal `%3Cscript%3E`, which
160
+ * contains no raw markup and would pass a raw-only check. Test the decoded
161
+ * form as well.
162
+ */
163
+ exports.sanitizeRef = sanitizeRef;
164
+ const sanitizeUtm = value => {
165
+ if (value.length > UTM_MAX_LENGTH) return "";
166
+ if (FORBIDDEN_CHARS.test(value) || hasForbiddenScheme(value)) {
167
+ return "";
168
+ }
169
+ const decoded = decodeDeep(value);
170
+ if (DECODED_FORBIDDEN_CHARS.test(decoded) || hasForbiddenScheme(decoded)) {
171
+ return "";
172
+ }
173
+ return value;
174
+ };
175
+
176
+ /**
177
+ * The decoded parts of a referrer's query string — keys as well as values.
178
+ * Handles both a full URL ("myapp://x?utm_source=...") and the bare query
179
+ * string the Android install referrer supplies ("utm_source=...&utm_medium=").
180
+ * Returns nothing when there is no query to read; the caller still checks the
181
+ * whole string.
182
+ *
183
+ * Keys matter because a parameter with no "=" parses entirely as a key with an
184
+ * empty value: "?%6Aavascript:alert(1)" would otherwise contribute nothing to
185
+ * inspect.
186
+ */
187
+ exports.sanitizeUtm = sanitizeUtm;
188
+ const referrerParamParts = value => {
189
+ const queryStart = value.indexOf("?");
190
+ const query = queryStart === -1 ? value : value.slice(queryStart + 1);
191
+ if (!query || queryStart === -1 && !query.includes("=")) return [];
192
+ try {
193
+ // URLSearchParams decodes leniently and does not throw on a stray "%".
194
+ const parts = [];
195
+ for (const [key, paramValue] of new URLSearchParams(query)) {
196
+ parts.push(key, paramValue);
197
+ }
198
+ return parts;
199
+ } catch {
200
+ return [];
201
+ }
202
+ };
203
+
204
+ /**
205
+ * A URL carries its payload percent-encoded — `Linking` and the browser both
206
+ * encode `<` and `>` — so a raw-only check would pass
207
+ * `?utm_source=%3Cscript%3E` straight through.
208
+ *
209
+ * Checked three ways, because pattern-matching the URL as one opaque string
210
+ * misses what a structural read catches: the whole value raw, the whole value
211
+ * decoded, and each decoded query part — keys included — on its own. The last
212
+ * is what catches a smuggled scheme, since FORBIDDEN_SCHEME_PREFIX is anchored
213
+ * and `?utm_source=javascript:alert(1)` only matches once that parameter is
214
+ * read apart from the `myapp://` URL containing it.
215
+ */
216
+ const sanitizeReferrer = value => {
217
+ if (value.length > REFERRER_MAX_LENGTH) return "";
218
+ if (FORBIDDEN_CHARS.test(value) || hasForbiddenScheme(value)) {
219
+ return "";
220
+ }
221
+ const decodedWhole = decodeDeep(value);
222
+ if (DECODED_FORBIDDEN_CHARS.test(decodedWhole) || hasForbiddenScheme(decodedWhole)) {
223
+ return "";
224
+ }
225
+ for (const part of referrerParamParts(value)) {
226
+ const decoded = decodeDeep(part);
227
+ if (DECODED_FORBIDDEN_CHARS.test(decoded) || hasForbiddenScheme(decoded)) {
228
+ return "";
229
+ }
230
+ }
231
+ return value;
232
+ };
233
+
234
+ /**
235
+ * Sanitize every traffic-source field of a (possibly sparse) traffic-source
236
+ * object. Unknown keys fall through to the UTM rule, the most permissive of
237
+ * the value rules.
238
+ */
239
+ exports.sanitizeReferrer = sanitizeReferrer;
240
+ const sanitizeTrafficSources = trafficSources => {
241
+ const result = {
242
+ ...trafficSources
243
+ };
244
+ for (const key of Object.keys(result)) {
245
+ const value = result[key];
246
+ if (typeof value !== "string" || value === "") {
247
+ continue;
248
+ }
249
+ if (key === "ref") {
250
+ result[key] = sanitizeRef(value);
251
+ } else if (key === "referrer") {
252
+ result[key] = sanitizeReferrer(value);
253
+ } else {
254
+ result[key] = sanitizeUtm(value);
255
+ }
256
+ }
257
+ return result;
258
+ };
259
+ exports.sanitizeTrafficSources = sanitizeTrafficSources;
260
+ //# sourceMappingURL=sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["REF_PATTERN","UTM_MAX_LENGTH","REFERRER_MAX_LENGTH","FORBIDDEN_CHARS","DECODED_FORBIDDEN_CHARS","FORBIDDEN_SCHEME_PREFIX","hasForbiddenScheme","value","test","split","some","segment","decodeRun","run","decodeURIComponent","escapes","match","out","i","length","taken","len","Math","min","slice","join","decodeOnce","replace","decodeDeep","current","next","sanitizeRef","exports","sanitizeUtm","decoded","referrerParamParts","queryStart","indexOf","query","includes","parts","key","paramValue","URLSearchParams","push","sanitizeReferrer","decodedWhole","part","sanitizeTrafficSources","trafficSources","result","Object","keys"],"sourceRoot":"../../../src","sources":["utils/sanitize.ts"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@ exports.updateStoredTrafficSource = updateStoredTrafficSource;
13
13
  var _index = require("../lib/logger/index.js");
14
14
  var _index2 = require("../lib/storage/index.js");
15
15
  var _index3 = require("../constants/index.js");
16
+ var _sanitize = require("./sanitize.js");
16
17
  /**
17
18
  * Traffic Source Utilities
18
19
  * Parse UTM parameters and referral information from URLs
@@ -21,8 +22,14 @@ var _index3 = require("../constants/index.js");
21
22
  /**
22
23
  * Parse UTM parameters and referral info from URL
23
24
  * Supports both web URLs (https://) and deep link URLs (myapp://)
25
+ *
26
+ * Every return path is sanitized (see ./sanitize) so scanner-injected or
27
+ * hand-crafted payloads in a deep link can never be persisted or reported.
24
28
  */
25
29
  function parseTrafficSource(url, customRefParams, pathPattern) {
30
+ return (0, _sanitize.sanitizeTrafficSources)(extractTrafficSource(url, customRefParams, pathPattern));
31
+ }
32
+ function extractTrafficSource(url, customRefParams, pathPattern) {
26
33
  try {
27
34
  // Handle deep link URLs that may not have standard URL format
28
35
  let urlObj;
@@ -110,7 +117,9 @@ function getStoredTrafficSource() {
110
117
  try {
111
118
  const stored = (0, _index2.storage)().get(_index3.SESSION_TRAFFIC_SOURCE_KEY);
112
119
  if (stored && typeof stored === "string") {
113
- return JSON.parse(stored);
120
+ // Sanitize on the way out too, so values persisted by a pre-sanitization
121
+ // SDK version are flushed rather than replayed onto every event.
122
+ return (0, _sanitize.sanitizeTrafficSources)(JSON.parse(stored));
114
123
  }
115
124
  } catch (error) {
116
125
  _index.logger.debug("Failed to get stored traffic source:", error);
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","_index2","_index3","parseTrafficSource","url","customRefParams","pathPattern","urlObj","URL","queryStart","indexOf","referrer","substring","params","searchParams","trafficSource","has","utm_source","get","utm_medium","utm_campaign","utm_term","utm_content","defaultRefParams","refParams","Set","param","ref","pathRegex","RegExp","pathname","match","e","logger","error","storeTrafficSource","hasData","storage","set","SESSION_TRAFFIC_SOURCE_KEY","JSON","stringify","debug","getStoredTrafficSource","stored","parse","undefined","clearTrafficSource","remove","mergeWithStoredTrafficSource","context","TRAFFIC_SOURCE_KEYS","updateStoredTrafficSource","incoming","existing","merged","key","incomingVal","existingVal","mergeTrafficSourceFill","changed","value","Object","entries","String"],"sourceRoot":"../../../src","sources":["utils/trafficSource.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_index","require","_index2","_index3","_sanitize","parseTrafficSource","url","customRefParams","pathPattern","sanitizeTrafficSources","extractTrafficSource","urlObj","URL","queryStart","indexOf","referrer","substring","params","searchParams","trafficSource","has","utm_source","get","utm_medium","utm_campaign","utm_term","utm_content","defaultRefParams","refParams","Set","param","ref","pathRegex","RegExp","pathname","match","e","logger","error","storeTrafficSource","hasData","storage","set","SESSION_TRAFFIC_SOURCE_KEY","JSON","stringify","debug","getStoredTrafficSource","stored","parse","undefined","clearTrafficSource","remove","mergeWithStoredTrafficSource","context","TRAFFIC_SOURCE_KEYS","updateStoredTrafficSource","incoming","existing","merged","key","incomingVal","existingVal","mergeTrafficSourceFill","changed","value","Object","entries","String"],"sourceRoot":"../../../src","sources":["utils/trafficSource.ts"],"mappings":"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","ignoreList":[]}
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.version = void 0;
7
7
  // This file is auto-generated by scripts/update-version.js during npm version
8
8
  // Do not edit manually - it will be overwritten
9
- const version = exports.version = '1.0.2';
9
+ const version = exports.version = '1.1.0';
10
10
  //# sourceMappingURL=version.js.map