Skip to content
This repository was archived by the owner on Oct 29, 2025. It is now read-only.

Commit 27e5af2

Browse files
authored
Merge pull request #169 from PerimeterX/dev
Version 2.13.1 from dev
2 parents 6552837 + f26c98c commit 27e5af2

File tree

7 files changed

+26
-18
lines changed

7 files changed

+26
-18
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](http://keepachangelog.com/)
66
and this project adheres to [Semantic Versioning](http://semver.org/).
77

8+
## [2.13.1] - 2021-07-04
9+
10+
### Added
11+
12+
- Bug fix: Cookie decryption fails on mobile sdk error
13+
814
## [2.13.0] - 2021-06-08
915

1016
### Added

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[PerimeterX](http://www.perimeterx.com) Shared base for NodeJS enforcers
77
=============================================================
88

9-
> Latest stable version: [v2.13.0](https://www.npmjs.com/package/perimeterx-node-core)
9+
> Latest stable version: [v2.13.1](https://www.npmjs.com/package/perimeterx-node-core)
1010
1111
This is a shared base implementation for PerimeterX Express enforcer and future NodeJS enforcers. For a fully functioning implementation example, see the [Node-Express enforcer](https://github.com/PerimeterX/perimeterx-node-express/) implementation.
1212

lib/pxcontext.js

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class PxContext {
3131
this.cookieOrigin = 'header';
3232
config.logger.debug('Mobile SDK token detected');
3333
this.originalToken = this.headers[mobileSdkOriginalTokenHeader];
34-
const tokenObject = this.getTokenObject(mobileHeader);
34+
const tokenObject = pxUtil.getTokenObject(mobileHeader);
3535
this.cookies[tokenObject.key] = tokenObject.value;
3636
} else {
3737
let cookies = req.cookies;
@@ -78,19 +78,6 @@ class PxContext {
7878
return false;
7979
}
8080

81-
getTokenObject(cookie, delimiter = ':') {
82-
if (cookie.indexOf(delimiter) > -1) {
83-
const [version, ...extractedCookie] = cookie.split(delimiter);
84-
if (version === '3') {
85-
return { key: '_px3', value: extractedCookie.join(delimiter) };
86-
}
87-
if (version === '1') {
88-
return { key: '_px', value: extractedCookie.join(delimiter) };
89-
}
90-
}
91-
return { key: '_px3', value: cookie };
92-
}
93-
9481
isMobile() {
9582
return this.cookieOrigin === 'header';
9683
}

lib/pxoriginaltoken.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
const TokenV3 = require('./cookie/tokenV3');
22
const TokenV1 = require('./cookie/tokenV1');
3+
const pxUtil = require('./pxutil');
34

45
function evalCookie(ctx, config) {
56
try {
6-
const noVersionOriginalToken = ctx.originalToken;
7+
const noVersionOriginalToken = pxUtil.getTokenObject(ctx.originalToken).value;
78
const cookie = (ctx.cookies['_px3'] ? new TokenV3(ctx, config, noVersionOriginalToken) : new TokenV1(ctx, config, noVersionOriginalToken));
89
config.logger.debug('Original token found, Evaluating');
910

lib/pxutil.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,19 @@ function isReqInMonitorMode(pxConfig, pxCtx) {
249249
);
250250
}
251251

252+
function getTokenObject(cookie, delimiter = ':') {
253+
if (cookie.indexOf(delimiter) > -1) {
254+
const [version, ...extractedCookie] = cookie.split(delimiter);
255+
if (version === '3') {
256+
return { key: '_px3', value: extractedCookie.join(delimiter) };
257+
}
258+
if (version === '1') {
259+
return { key: '_px', value: extractedCookie.join(delimiter) };
260+
}
261+
}
262+
return { key: '_px3', value: cookie };
263+
}
264+
252265
module.exports = {
253266
formatHeaders,
254267
filterSensitiveHeaders,
@@ -266,4 +279,5 @@ module.exports = {
266279
isStringMatchWith,
267280
generateHMAC,
268281
isReqInMonitorMode,
282+
getTokenObject,
269283
};

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "perimeterx-node-core",
3-
"version": "2.13.0",
3+
"version": "2.13.1",
44
"description": "PerimeterX NodeJS shared core for various applications to monitor and block traffic according to PerimeterX risk score",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)