@hmcts/rpx-xui-node-lib 2.30.7-new-csp-7 → 2.30.7-new-csp-9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"csp.d.ts","sourceRoot":"","sources":["../../../src/common/util/csp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI1D,wBAAgB,GAAG,CAAC,EAClB,WAA+E,EAC/E,UAA+E,EAC/E,YAA+E,EAC/E,SAA+E,EAC/E,QAA+E,EAE/E,UAAiB,EAClB;;;;;;;CAAK,IAEF,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,UA0BrB"}
1
+ {"version":3,"file":"csp.d.ts","sourceRoot":"","sources":["../../../src/common/util/csp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK1D,wBAAgB,GAAG,CAAC,EAClB,WAA6E,EAC7E,UAA2E,EAC3E,YAA+E,EAC/E,SAAyE,EACzE,QAAuE,EACvE,UAAe,EAChB;;;;;;;CAAK,IACI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UA8BxD"}
@@ -6,35 +6,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.csp = csp;
7
7
  const helmet_1 = __importDefault(require("helmet"));
8
8
  const node_crypto_1 = __importDefault(require("node:crypto"));
9
+ const deepmerge_1 = __importDefault(require("deepmerge")); // <-- deep merge helper
9
10
  function csp(_a) {
10
11
  var _b, _c, _d, _e, _f;
11
- var { extraScript = ((_b = process.env.CSP_SCRIPT_EXTRA) !== null && _b !== void 0 ? _b : '').split(',').filter(Boolean), extraStyle = ((_c = process.env.CSP_STYLE_EXTRA) !== null && _c !== void 0 ? _c : '').split(',').filter(Boolean), extraConnect = ((_d = process.env.CSP_CONNECT_EXTRA) !== null && _d !== void 0 ? _d : '').split(',').filter(Boolean), extraFont = ((_e = process.env.CSP_FONT_EXTRA) !== null && _e !== void 0 ? _e : '').split(',').filter(Boolean), extraImg = ((_f = process.env.CSP_IMG_EXTRA) !== null && _f !== void 0 ? _f : '').split(',').filter(Boolean),
12
- // old csp to merge with
13
- defaultCsp = {} } = _a === void 0 ? {} : _a;
12
+ var { extraScript = ((_b = process.env.CSP_SCRIPT_EXTRA) !== null && _b !== void 0 ? _b : '').split(',').filter(Boolean), extraStyle = ((_c = process.env.CSP_STYLE_EXTRA) !== null && _c !== void 0 ? _c : '').split(',').filter(Boolean), extraConnect = ((_d = process.env.CSP_CONNECT_EXTRA) !== null && _d !== void 0 ? _d : '').split(',').filter(Boolean), extraFont = ((_e = process.env.CSP_FONT_EXTRA) !== null && _e !== void 0 ? _e : '').split(',').filter(Boolean), extraImg = ((_f = process.env.CSP_IMG_EXTRA) !== null && _f !== void 0 ? _f : '').split(',').filter(Boolean), defaultCsp = {} } = _a === void 0 ? {} : _a;
14
13
  return (req, res, next) => {
15
14
  const nonce = node_crypto_1.default.randomBytes(16).toString('base64');
16
15
  res.locals.cspNonce = nonce;
17
16
  const newCsp = {
18
17
  useDefaults: true,
19
18
  directives: {
20
- "default-src": ["'self'"],
21
- "script-src": ["'self'", `'nonce-${nonce}'`, ...extraScript],
22
- "style-src": ["'self'", `'nonce-${nonce}'`, ...extraStyle],
23
- "styleSrcAttr": ["'unsafe-inline'"],
24
- "connect-src": ["'self'", "blob:", "data:", ...extraConnect],
25
- "img-src": ["'self'", "data:", ...extraImg],
26
- "font-src": ["'self'", "data:", "https://fonts.gstatic.com", ...extraFont],
27
- "object-src": ["'none'"],
28
- "frame-src": ["'self'"],
29
- "frame-ancestors": ["'self'"],
30
- "form-action": ["'none'"]
19
+ /* camel‑case so they merge onto the existing ones */
20
+ defaultSrc: ["'self'"], // default-src
21
+ scriptSrc: ["'self'", `'nonce-${nonce}'`, ...extraScript],
22
+ styleSrc: ["'self'", `'nonce-${nonce}'`, ...extraStyle],
23
+ /* style attribute allowance */
24
+ styleSrcAttr: ["'unsafe-inline'"], // style-src-attr
25
+ connectSrc: ["'self'", "blob:", "data:", ...extraConnect],
26
+ imgSrc: ["'self'", "data:", ...extraImg],
27
+ fontSrc: ["'self'", "data:", "https://fonts.gstatic.com", ...extraFont],
28
+ objectSrc: ["'none'"],
29
+ frameSrc: ["'self'"],
30
+ frameAncestors: ["'self'"],
31
+ formAction: ["'none'"]
31
32
  },
32
- // if CSP_REPORT_ONLY is set to true, use report-only mode
33
- // this allows you to test your CSP without enforcing it
34
33
  reportOnly: process.env.CSP_REPORT_ONLY === 'true'
35
34
  };
36
- const csp = Object.assign(Object.assign({}, defaultCsp), newCsp);
37
- helmet_1.default.contentSecurityPolicy(csp)(req, res, next);
35
+ const finalCsp = (0, deepmerge_1.default)(defaultCsp, newCsp);
36
+ helmet_1.default.contentSecurityPolicy(finalCsp)(req, res, next);
38
37
  };
39
38
  }
40
39
  //# sourceMappingURL=csp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"csp.js","sourceRoot":"","sources":["../../../src/common/util/csp.ts"],"names":[],"mappings":";;;;;AAIA,kBAsCC;AAzCD,oDAA4B;AAC5B,8DAAiC;AAEjC,SAAgB,GAAG,CAAC,EAQd;;QARc,EAClB,WAAW,GAAI,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,mCAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/E,UAAU,GAAK,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,eAAe,mCAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/E,YAAY,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,mCAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/E,SAAS,GAAM,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,cAAc,mCAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/E,QAAQ,GAAO,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,aAAa,mCAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/E,wBAAwB;IACxB,UAAU,GAAK,EAAE,EAClB,mBAAG,EAAE;IACJ,OAAO,CACL,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;QACF,MAAM,KAAK,GAAW,qBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG;YACb,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE;gBACV,aAAa,EAAE,CAAC,QAAQ,CAAC;gBACzB,YAAY,EAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG,EAAE,GAAG,WAAW,CAAC;gBAC7D,WAAW,EAAI,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG,EAAE,GAAG,UAAU,CAAC;gBAC5D,cAAc,EAAG,CAAC,iBAAiB,CAAC;gBACpC,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;gBAC5D,SAAS,EAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;gBAC/C,UAAU,EAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE,GAAG,SAAS,CAAC;gBAC7E,YAAY,EAAG,CAAC,QAAQ,CAAC;gBACzB,WAAW,EAAI,CAAC,QAAQ,CAAC;gBACzB,iBAAiB,EAAE,CAAC,QAAQ,CAAC;gBAC7B,aAAa,EAAE,CAAC,QAAQ,CAAC;aAC1B;YACD,0DAA0D;YAC1D,wDAAwD;YACxD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;SACnD,CAAA;QACD,MAAM,GAAG,mCAAQ,UAAU,GAAK,MAAM,CAAE,CAAC;QACzC,gBAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"csp.js","sourceRoot":"","sources":["../../../src/common/util/csp.ts"],"names":[],"mappings":";;;;;AAKA,kBAsCC;AA1CD,oDAA4B;AAC5B,8DAAiC;AACjC,0DAA8B,CAAqB,wBAAwB;AAE3E,SAAgB,GAAG,CAAC,EAOd;;QAPc,EAClB,WAAW,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,mCAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7E,UAAU,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC3E,YAAY,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,mCAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/E,SAAS,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,cAAc,mCAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACzE,QAAQ,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,aAAa,mCAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACvE,UAAU,GAAG,EAAE,EAChB,mBAAG,EAAE;IACJ,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,qBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAE5B,MAAM,MAAM,GAAG;YACb,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE;gBACV,qDAAqD;gBACrD,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAgC,cAAc;gBACpE,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG,EAAE,GAAG,WAAW,CAAC;gBACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG,EAAE,GAAG,UAAU,CAAC;gBAEvD,+BAA+B;gBAC/B,YAAY,EAAE,CAAC,iBAAiB,CAAC,EAAsB,iBAAiB;gBAExE,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;gBACzD,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;gBACxC,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,2BAA2B,EAAE,GAAG,SAAS,CAAC;gBAEvE,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,cAAc,EAAE,CAAC,QAAQ,CAAC;gBAC1B,UAAU,EAAE,CAAC,QAAQ,CAAC;aACvB;YACD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;SACnD,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAA,mBAAK,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3C,gBAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hmcts/rpx-xui-node-lib",
3
- "version": "2.30.7-new-csp-7",
3
+ "version": "2.30.7-new-csp-9",
4
4
  "description": "Common nodejs library components for XUI",
5
5
  "main": "dist/index",
6
6
  "types": "dist/index.d.ts",