@futdevpro/nts-dynamo 1.15.410 → 1.15.412

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.
@@ -31,13 +31,29 @@ import { DyNTS_SignedUrl_VerifyResult } from '../_models/interfaces/signed-url-v
31
31
  * a fallback-döntés a hívóé, de **tudatosan**.
32
32
  * 2. `verify` **SOHA nem dob** — strukturált `{ valid, reason }`-t ad, hogy a gate-ek egységes,
33
33
  * szivárgás-mentes választ tudjanak adni.
34
+ *
35
+ * 🔴 **BFR-FDPFTPSERVICE-009 — a dot segment (`.` / `..`) is NEVER valid.** `normalizePath` does not canonicalize,
36
+ * and servers decide the zone (open / always-signed) by matching the START of the normalized path, while the file
37
+ * system resolves the dot segment ⇒ `open/../invoices/…` counted as open and was served from the invoice vault
38
+ * without a signature (measured on TEST). Hence: `hasDotSegment` for the gates, BEFORE the zone decision · `verify`
39
+ * rejects a dot-segment path before any other check (`dot-segment`) · `sign` never signs such a path.
34
40
  */
35
41
  export declare class DyNTS_SignedUrl_Util {
36
42
  /**
37
43
  * Path normalizálás az aláíráshoz/validáláshoz: vezető `/`-ek le, `\` → `/`.
38
44
  * A kanonikus string első fele — a két oldalnak **bit-azonosan** kell normalizálnia.
45
+ *
46
+ * ⚠️ **Does NOT canonicalize:** a `.` / `..` segment is neither resolved nor rejected — build a prefix, regex or
47
+ * `startsWith` decision on the result ONLY after excluding `hasDotSegment` (BFR-FDPFTPSERVICE-009).
39
48
  */
40
49
  static normalizePath(filePath: string): string;
50
+ /**
51
+ * Whether the path has a dot segment (`.` or `..`), with `/` or `\` as separator. A name merely STARTING with a dot
52
+ * (`..hidden`, `.env`) is not a segment. Gates call it BEFORE the zone decision (BFR-FDPFTPSERVICE-009).
53
+ *
54
+ * @param filePath the (already decoded) path
55
+ */
56
+ static hasDotSegment(filePath: string): boolean;
41
57
  /**
42
58
  * A HMAC bemenete: `` `<normalizedPath>\n<expMs>` ``.
43
59
  * **Publikus**, hogy tesztelhető és auditálható legyen (az arany-vektor erre épül).
@@ -48,6 +64,7 @@ export declare class DyNTS_SignedUrl_Util {
48
64
  *
49
65
  * @throws `DyNTS-SURL-SIGN-NOSEC` — üres secret *(⚠️ NEM ad csendben üres aláírást)*
50
66
  * @throws `DyNTS-SURL-SIGN-BADEXP` — nem-szám / nem-pozitív `expMs`
67
+ * @throws `DyNTS-SURL-SIGN-DOTSEG` — a dot-segment path *(BFR-FDPFTPSERVICE-009: never signed)*
51
68
  */
52
69
  static sign(filePath: string, expMs: number, secret: string): string;
53
70
  /**
@@ -77,6 +94,8 @@ export declare class DyNTS_SignedUrl_Util {
77
94
  secret: string;
78
95
  nowMs?: number;
79
96
  }): string;
97
+ /** A dot-segment path → a loud error (BFR-FDPFTPSERVICE-009); the caller's input error, hence 400. */
98
+ private static _assertNoDotSegment;
80
99
  /** Üres secret → hangos hiba. ⚠️ A titok SOHA nem kerül a hiba-kontextusba. */
81
100
  private static _assertSecret;
82
101
  /** Nem-szám / nem-pozitív lejárat → hangos hiba (a csendes `NaN`-os aláírás rosszabb). */
@@ -1 +1 @@
1
- {"version":3,"file":"signed-url.util.d.ts","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AAExG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,oBAAoB;IAE/B;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpE;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAUpE;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,4BAA4B;IAiChC;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,MAAM;IAoBV,+EAA+E;IAC/E,OAAO,CAAC,MAAM,CAAC,aAAa;IAW5B,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,UAAU;CAU1B"}
1
+ {"version":3,"file":"signed-url.util.d.ts","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AAExG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,oBAAoB;IAE/B;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI/C;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpE;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAWpE;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,4BAA4B;IAsChC;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,MAAM;IAoBV,sGAAsG;IACtG,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAWlC,+EAA+E;IAC/E,OAAO,CAAC,MAAM,CAAC,aAAa;IAW5B,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,UAAU;CAU1B"}
@@ -36,15 +36,33 @@ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
36
36
  * a fallback-döntés a hívóé, de **tudatosan**.
37
37
  * 2. `verify` **SOHA nem dob** — strukturált `{ valid, reason }`-t ad, hogy a gate-ek egységes,
38
38
  * szivárgás-mentes választ tudjanak adni.
39
+ *
40
+ * 🔴 **BFR-FDPFTPSERVICE-009 — a dot segment (`.` / `..`) is NEVER valid.** `normalizePath` does not canonicalize,
41
+ * and servers decide the zone (open / always-signed) by matching the START of the normalized path, while the file
42
+ * system resolves the dot segment ⇒ `open/../invoices/…` counted as open and was served from the invoice vault
43
+ * without a signature (measured on TEST). Hence: `hasDotSegment` for the gates, BEFORE the zone decision · `verify`
44
+ * rejects a dot-segment path before any other check (`dot-segment`) · `sign` never signs such a path.
39
45
  */
40
46
  class DyNTS_SignedUrl_Util {
41
47
  /**
42
48
  * Path normalizálás az aláíráshoz/validáláshoz: vezető `/`-ek le, `\` → `/`.
43
49
  * A kanonikus string első fele — a két oldalnak **bit-azonosan** kell normalizálnia.
50
+ *
51
+ * ⚠️ **Does NOT canonicalize:** a `.` / `..` segment is neither resolved nor rejected — build a prefix, regex or
52
+ * `startsWith` decision on the result ONLY after excluding `hasDotSegment` (BFR-FDPFTPSERVICE-009).
44
53
  */
45
54
  static normalizePath(filePath) {
46
55
  return (filePath ?? '').replace(/^\/+/, '').replace(/\\/g, '/');
47
56
  }
57
+ /**
58
+ * Whether the path has a dot segment (`.` or `..`), with `/` or `\` as separator. A name merely STARTING with a dot
59
+ * (`..hidden`, `.env`) is not a segment. Gates call it BEFORE the zone decision (BFR-FDPFTPSERVICE-009).
60
+ *
61
+ * @param filePath the (already decoded) path
62
+ */
63
+ static hasDotSegment(filePath) {
64
+ return `${filePath ?? ''}`.split(/[\\/]/u).some((segment) => segment === '.' || segment === '..');
65
+ }
48
66
  /**
49
67
  * A HMAC bemenete: `` `<normalizedPath>\n<expMs>` ``.
50
68
  * **Publikus**, hogy tesztelhető és auditálható legyen (az arany-vektor erre épül).
@@ -57,8 +75,10 @@ class DyNTS_SignedUrl_Util {
57
75
  *
58
76
  * @throws `DyNTS-SURL-SIGN-NOSEC` — üres secret *(⚠️ NEM ad csendben üres aláírást)*
59
77
  * @throws `DyNTS-SURL-SIGN-BADEXP` — nem-szám / nem-pozitív `expMs`
78
+ * @throws `DyNTS-SURL-SIGN-DOTSEG` — a dot-segment path *(BFR-FDPFTPSERVICE-009: never signed)*
60
79
  */
61
80
  static sign(filePath, expMs, secret) {
81
+ DyNTS_SignedUrl_Util._assertNoDotSegment(filePath);
62
82
  DyNTS_SignedUrl_Util._assertSecret(secret, filePath);
63
83
  DyNTS_SignedUrl_Util._assertExp(expMs, filePath);
64
84
  return Crypto
@@ -73,6 +93,10 @@ class DyNTS_SignedUrl_Util {
73
93
  * `nowMs` injektálható → determinisztikus teszt (nincs `Date.now()` a tesztben).
74
94
  */
75
95
  static verify(params) {
96
+ // BFR-FDPFTPSERVICE-009 — a dot-segment path is valid with NO signature (the zone-bypass guard)
97
+ if (DyNTS_SignedUrl_Util.hasDotSegment(params.filePath)) {
98
+ return { valid: false, reason: 'dot-segment' };
99
+ }
76
100
  if (!params.secret) {
77
101
  return { valid: false, reason: 'missing-secret' };
78
102
  }
@@ -119,6 +143,17 @@ class DyNTS_SignedUrl_Util {
119
143
  const signature = DyNTS_SignedUrl_Util.sign(normalizedPath, expMs, params.secret);
120
144
  return `${base}/${normalizedPath}?exp=${expMs}&sig=${signature}`;
121
145
  }
146
+ /** A dot-segment path → a loud error (BFR-FDPFTPSERVICE-009); the caller's input error, hence 400. */
147
+ static _assertNoDotSegment(filePath) {
148
+ if (DyNTS_SignedUrl_Util.hasDotSegment(filePath)) {
149
+ throw new fsm_dynamo_1.DyFM_Error({
150
+ status: 400,
151
+ errorCode: 'DyNTS-SURL-SIGN-DOTSEG',
152
+ message: 'Signed URL: the path has a "." / ".." segment — refusing to sign it (zone bypass guard).',
153
+ additionalContent: { filePath: DyNTS_SignedUrl_Util.normalizePath(filePath) },
154
+ });
155
+ }
156
+ }
122
157
  /** Üres secret → hangos hiba. ⚠️ A titok SOHA nem kerül a hiba-kontextusba. */
123
158
  static _assertSecret(secret, filePath) {
124
159
  if (!secret) {
@@ -1 +1 @@
1
- {"version":3,"file":"signed-url.util.js","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signed-url.util.js","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@
9
9
  */
10
10
  export interface DyNTS_SignedUrl_VerifyResult {
11
11
  valid: boolean;
12
- reason?: 'missing-secret' | 'missing-params' | 'expired' | 'signature-mismatch';
12
+ /** `dot-segment` — BFR-FDPFTPSERVICE-009: a `.` / `..` path segment is never valid (see `hasDotSegment`). */
13
+ reason?: 'missing-secret' | 'missing-params' | 'expired' | 'signature-mismatch' | 'dot-segment';
13
14
  }
14
15
  //# sourceMappingURL=signed-url-verify-result.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signed-url-verify-result.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/signed-url-verify-result.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,GAAG,oBAAoB,CAAC;CACjF"}
1
+ {"version":3,"file":"signed-url-verify-result.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/signed-url-verify-result.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,6GAA6G;IAC7G,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,GAAG,oBAAoB,GAAG,aAAa,CAAC;CACjG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.15.410",
3
+ "version": "01.15.412",
4
4
  "description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "server-package",