xypriss 9.12.44 → 9.12.46

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.
@@ -2,6 +2,9 @@
2
2
 
3
3
  var strulink = require('strulink');
4
4
 
5
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
6
+ const HASH_REGEX = /^[0-9a-f]{16,64}$/i;
7
+ const SAFE_PARAM_REGEX = /^[a-zA-Z0-9_\-.~%]+$/;
5
8
  class MaliciousUrlScanner {
6
9
  /**
7
10
  * Middleware for scanning incoming URLs for malicious payloads (XSS, Path Traversal, etc.)
@@ -25,37 +28,83 @@ class MaliciousUrlScanner {
25
28
  return (req, res, next) => next?.();
26
29
  }
27
30
  const mode = scannerConfig.mode || "block";
28
- const options = scannerConfig.options || {
29
- minScore: 40,
31
+ const options = {
32
+ minScore: 70,
30
33
  sensitivity: 1.0,
34
+ enableEntropyAnalysis: false, // Disabled by default to prevent false positives on UUIDs and hash IDs
35
+ ...scannerConfig.options,
31
36
  advanced: {
32
37
  maxEncodingLayers: 3,
33
- entropyThreshold: 4.8
34
- }
38
+ entropyThreshold: 5.5,
39
+ ...scannerConfig.options?.advanced,
40
+ },
35
41
  };
36
42
  return async (req, res, next) => {
37
43
  try {
44
+ const reqPath = req.path || (req.url ? req.url.split("?")[0] : "");
45
+ // Check excluded paths
46
+ if (scannerConfig.excludePaths && scannerConfig.excludePaths.length > 0) {
47
+ for (const pattern of scannerConfig.excludePaths) {
48
+ if (typeof pattern === "string") {
49
+ if (pattern.endsWith("/**")) {
50
+ const prefix = pattern.slice(0, -3);
51
+ if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
52
+ return next?.();
53
+ }
54
+ }
55
+ else if (pattern.endsWith("/*")) {
56
+ const prefix = pattern.slice(0, -2);
57
+ if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
58
+ return next?.();
59
+ }
60
+ }
61
+ else if (reqPath === pattern || reqPath.startsWith(pattern)) {
62
+ return next?.();
63
+ }
64
+ }
65
+ else if (pattern instanceof RegExp && pattern.test(reqPath)) {
66
+ return next?.();
67
+ }
68
+ }
69
+ }
38
70
  // Reconstruct full URL to scan everything including path and query
39
71
  const protocol = req.headers["x-forwarded-proto"] || "http";
40
72
  const host = req.headers.host || "localhost";
41
73
  const fullUrl = `${protocol}://${host}${req.originalUrl || req.url}`;
42
74
  const result = await strulink.__strl__.scanUrl(fullUrl, options);
43
75
  if (result.isMalicious) {
44
- const reasons = result.detectedPatterns.map(p => p.type).join(", ");
45
- const logMessage = `[MaliciousUrlScanner] Detected malicious URL (Score: ${result.score}). Reasons: ${reasons}. URL: ${req.url}`;
46
- if (logger) {
47
- logger.warn("security", logMessage);
48
- }
49
- else {
50
- console.warn(logMessage);
51
- }
52
- if (mode === "block") {
53
- res.status(403).json({
54
- error: "Forbidden",
55
- code: "EMALICIOUSURL",
56
- message: "The request was blocked due to suspected malicious payload."
57
- });
58
- return;
76
+ // Filter heuristic false positives on standard UUIDs, hashes, and benign params
77
+ const genuinePatterns = (result.detectedPatterns || []).filter((p) => {
78
+ if (scannerConfig.ignorePatterns?.includes(p.type)) {
79
+ return false;
80
+ }
81
+ if (p.type === "encoded_payload" || p.pattern === "high_entropy") {
82
+ const val = p.matchedValue || "";
83
+ if (UUID_REGEX.test(val) || HASH_REGEX.test(val) || SAFE_PARAM_REGEX.test(val)) {
84
+ return false;
85
+ }
86
+ }
87
+ return true;
88
+ });
89
+ if (genuinePatterns.length > 0) {
90
+ const reasons = genuinePatterns.map((p) => p.type).join(", ");
91
+ const logMessage = `[MaliciousUrlScanner] Detected malicious URL (Score: ${result.score}). Reasons: ${reasons}. URL: ${req.url}`;
92
+ if (logger) {
93
+ logger.warn("security", logMessage);
94
+ }
95
+ else {
96
+ console.warn(logMessage);
97
+ }
98
+ if (mode === "block") {
99
+ if (!res.headersSent && !res.writableEnded) {
100
+ res.status(403).json({
101
+ error: "Forbidden",
102
+ code: "EMALICIOUSURL",
103
+ message: "The request was blocked due to suspected malicious payload."
104
+ });
105
+ }
106
+ return;
107
+ }
59
108
  }
60
109
  }
61
110
  next?.();
@@ -64,8 +113,6 @@ class MaliciousUrlScanner {
64
113
  if (logger) {
65
114
  logger.error("security", "Failed to scan URL for malicious payloads", err);
66
115
  }
67
- // Fail open or fail closed? Usually fail closed for security, but fail open to avoid breaking app if strulink crashes.
68
- // We'll call next() to fail open.
69
116
  next?.();
70
117
  }
71
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":["__strl__"],"mappings":";;;;MAMa,mBAAmB,CAAA;AAC5B;;;;;;AAMG;AACH,IAAA,OAAO,UAAU,CACb,MAAA,GAA8C,KAAK,EACnD,MAAe,EAAA;;QAGf,IAAI,aAAa,GAA8B,EAAE;AAEjD,QAAA,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,CAAC,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAK,IAAI,IAAI;YAC9F,aAAa,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QACpD;aAAO;YACH,aAAa,GAAG,MAAM;QAC1B;AAEA,QAAA,IAAI,aAAa,CAAC,OAAO,KAAK,KAAK,EAAE;AACjC,YAAA,OAAO,CAAC,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAK,IAAI,IAAI;QACrF;AAEA,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,IAAI,OAAO;AAC1C,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI;AACrC,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,QAAQ,EAAE;AACN,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,gBAAgB,EAAE;AACrB;SACJ;QAED,OAAO,OAAO,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAI;AAC1E,YAAA,IAAI;;gBAEA,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM;gBAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW;AAC5C,gBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,QAAQ,MAAM,IAAI,CAAA,EAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,EAAE;gBAEpE,MAAM,MAAM,GAAG,MAAMA,iBAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;AAEvD,gBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;oBACpB,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnE,oBAAA,MAAM,UAAU,GAAG,CAAA,qDAAA,EAAwD,MAAM,CAAC,KAAK,CAAA,YAAA,EAAe,OAAO,CAAA,OAAA,EAAU,GAAG,CAAC,GAAG,EAAE;oBAEhI,IAAI,MAAM,EAAE;AACR,wBAAA,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;oBACvC;yBAAO;AACH,wBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC5B;AAEA,oBAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,wBAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACjB,4BAAA,KAAK,EAAE,WAAW;AAClB,4BAAA,IAAI,EAAE,eAAe;AACrB,4BAAA,OAAO,EAAE;AACZ,yBAAA,CAAC;wBACF;oBACJ;gBACJ;gBAEA,IAAI,IAAI;YACZ;YAAE,OAAO,GAAG,EAAE;gBACV,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,2CAA2C,EAAE,GAAY,CAAC;gBACvF;;;gBAGA,IAAI,IAAI;YACZ;AACJ,QAAA,CAAC;IACL;AACH;;;;"}
1
+ {"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":["__strl__"],"mappings":"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"}
@@ -121,8 +121,12 @@ function mountRouter(mountPath, subRouter, internalState) {
121
121
  handler: entry.handler,
122
122
  };
123
123
  }
124
+ // NOTE: Do NOT inject `path: normalizedMountPath` here for unscoped/route-level middleware
125
+ // or guards (e.g. guards from router.group() or RichRouteOptions).
126
+ // Injecting a strict path prefix here causes HttpServer to filter out the middleware
127
+ // on parameterized/nested routes (e.g. /client-api/groups/:groupId).
128
+ // Ref: https://github.com/Nehonix-Team/XyPriss/issues/40
124
129
  return {
125
- path: normalizedMountPath,
126
130
  handler: entry.handler,
127
131
  };
128
132
  });
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":["path","normalizePath","isValidPath","resolveCondition","middleware","createGuardMiddleware","compileRoutePattern","createCacheMiddleware","wrapWithLifecycle","nextRouteId","detectStatusCodes","joinPaths"],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":["path","normalizePath","isValidPath","resolveCondition","middleware","createGuardMiddleware","compileRoutePattern","createCacheMiddleware","wrapWithLifecycle","nextRouteId","detectStatusCodes","joinPaths"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { __strl__ } from 'strulink';
2
2
 
3
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
4
+ const HASH_REGEX = /^[0-9a-f]{16,64}$/i;
5
+ const SAFE_PARAM_REGEX = /^[a-zA-Z0-9_\-.~%]+$/;
3
6
  class MaliciousUrlScanner {
4
7
  /**
5
8
  * Middleware for scanning incoming URLs for malicious payloads (XSS, Path Traversal, etc.)
@@ -23,37 +26,83 @@ class MaliciousUrlScanner {
23
26
  return (req, res, next) => next?.();
24
27
  }
25
28
  const mode = scannerConfig.mode || "block";
26
- const options = scannerConfig.options || {
27
- minScore: 40,
29
+ const options = {
30
+ minScore: 70,
28
31
  sensitivity: 1.0,
32
+ enableEntropyAnalysis: false, // Disabled by default to prevent false positives on UUIDs and hash IDs
33
+ ...scannerConfig.options,
29
34
  advanced: {
30
35
  maxEncodingLayers: 3,
31
- entropyThreshold: 4.8
32
- }
36
+ entropyThreshold: 5.5,
37
+ ...scannerConfig.options?.advanced,
38
+ },
33
39
  };
34
40
  return async (req, res, next) => {
35
41
  try {
42
+ const reqPath = req.path || (req.url ? req.url.split("?")[0] : "");
43
+ // Check excluded paths
44
+ if (scannerConfig.excludePaths && scannerConfig.excludePaths.length > 0) {
45
+ for (const pattern of scannerConfig.excludePaths) {
46
+ if (typeof pattern === "string") {
47
+ if (pattern.endsWith("/**")) {
48
+ const prefix = pattern.slice(0, -3);
49
+ if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
50
+ return next?.();
51
+ }
52
+ }
53
+ else if (pattern.endsWith("/*")) {
54
+ const prefix = pattern.slice(0, -2);
55
+ if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
56
+ return next?.();
57
+ }
58
+ }
59
+ else if (reqPath === pattern || reqPath.startsWith(pattern)) {
60
+ return next?.();
61
+ }
62
+ }
63
+ else if (pattern instanceof RegExp && pattern.test(reqPath)) {
64
+ return next?.();
65
+ }
66
+ }
67
+ }
36
68
  // Reconstruct full URL to scan everything including path and query
37
69
  const protocol = req.headers["x-forwarded-proto"] || "http";
38
70
  const host = req.headers.host || "localhost";
39
71
  const fullUrl = `${protocol}://${host}${req.originalUrl || req.url}`;
40
72
  const result = await __strl__.scanUrl(fullUrl, options);
41
73
  if (result.isMalicious) {
42
- const reasons = result.detectedPatterns.map(p => p.type).join(", ");
43
- const logMessage = `[MaliciousUrlScanner] Detected malicious URL (Score: ${result.score}). Reasons: ${reasons}. URL: ${req.url}`;
44
- if (logger) {
45
- logger.warn("security", logMessage);
46
- }
47
- else {
48
- console.warn(logMessage);
49
- }
50
- if (mode === "block") {
51
- res.status(403).json({
52
- error: "Forbidden",
53
- code: "EMALICIOUSURL",
54
- message: "The request was blocked due to suspected malicious payload."
55
- });
56
- return;
74
+ // Filter heuristic false positives on standard UUIDs, hashes, and benign params
75
+ const genuinePatterns = (result.detectedPatterns || []).filter((p) => {
76
+ if (scannerConfig.ignorePatterns?.includes(p.type)) {
77
+ return false;
78
+ }
79
+ if (p.type === "encoded_payload" || p.pattern === "high_entropy") {
80
+ const val = p.matchedValue || "";
81
+ if (UUID_REGEX.test(val) || HASH_REGEX.test(val) || SAFE_PARAM_REGEX.test(val)) {
82
+ return false;
83
+ }
84
+ }
85
+ return true;
86
+ });
87
+ if (genuinePatterns.length > 0) {
88
+ const reasons = genuinePatterns.map((p) => p.type).join(", ");
89
+ const logMessage = `[MaliciousUrlScanner] Detected malicious URL (Score: ${result.score}). Reasons: ${reasons}. URL: ${req.url}`;
90
+ if (logger) {
91
+ logger.warn("security", logMessage);
92
+ }
93
+ else {
94
+ console.warn(logMessage);
95
+ }
96
+ if (mode === "block") {
97
+ if (!res.headersSent && !res.writableEnded) {
98
+ res.status(403).json({
99
+ error: "Forbidden",
100
+ code: "EMALICIOUSURL",
101
+ message: "The request was blocked due to suspected malicious payload."
102
+ });
103
+ }
104
+ return;
105
+ }
57
106
  }
58
107
  }
59
108
  next?.();
@@ -62,8 +111,6 @@ class MaliciousUrlScanner {
62
111
  if (logger) {
63
112
  logger.error("security", "Failed to scan URL for malicious payloads", err);
64
113
  }
65
- // Fail open or fail closed? Usually fail closed for security, but fail open to avoid breaking app if strulink crashes.
66
- // We'll call next() to fail open.
67
114
  next?.();
68
115
  }
69
116
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAMa,mBAAmB,CAAA;AAC5B;;;;;;AAMG;AACH,IAAA,OAAO,UAAU,CACb,MAAA,GAA8C,KAAK,EACnD,MAAe,EAAA;;QAGf,IAAI,aAAa,GAA8B,EAAE;AAEjD,QAAA,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,CAAC,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAK,IAAI,IAAI;YAC9F,aAAa,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QACpD;aAAO;YACH,aAAa,GAAG,MAAM;QAC1B;AAEA,QAAA,IAAI,aAAa,CAAC,OAAO,KAAK,KAAK,EAAE;AACjC,YAAA,OAAO,CAAC,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAK,IAAI,IAAI;QACrF;AAEA,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,IAAI,OAAO;AAC1C,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI;AACrC,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,QAAQ,EAAE;AACN,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,gBAAgB,EAAE;AACrB;SACJ;QAED,OAAO,OAAO,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAI;AAC1E,YAAA,IAAI;;gBAEA,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM;gBAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW;AAC5C,gBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,QAAQ,MAAM,IAAI,CAAA,EAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,EAAE;gBAEpE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;AAEvD,gBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;oBACpB,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnE,oBAAA,MAAM,UAAU,GAAG,CAAA,qDAAA,EAAwD,MAAM,CAAC,KAAK,CAAA,YAAA,EAAe,OAAO,CAAA,OAAA,EAAU,GAAG,CAAC,GAAG,EAAE;oBAEhI,IAAI,MAAM,EAAE;AACR,wBAAA,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;oBACvC;yBAAO;AACH,wBAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC5B;AAEA,oBAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,wBAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACjB,4BAAA,KAAK,EAAE,WAAW;AAClB,4BAAA,IAAI,EAAE,eAAe;AACrB,4BAAA,OAAO,EAAE;AACZ,yBAAA,CAAC;wBACF;oBACJ;gBACJ;gBAEA,IAAI,IAAI;YACZ;YAAE,OAAO,GAAG,EAAE;gBACV,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,2CAA2C,EAAE,GAAY,CAAC;gBACvF;;;gBAGA,IAAI,IAAI;YACZ;AACJ,QAAA,CAAC;IACL;AACH;;;;"}
1
+ {"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -119,8 +119,12 @@ function mountRouter(mountPath, subRouter, internalState) {
119
119
  handler: entry.handler,
120
120
  };
121
121
  }
122
+ // NOTE: Do NOT inject `path: normalizedMountPath` here for unscoped/route-level middleware
123
+ // or guards (e.g. guards from router.group() or RichRouteOptions).
124
+ // Injecting a strict path prefix here causes HttpServer to filter out the middleware
125
+ // on parameterized/nested routes (e.g. /client-api/groups/:groupId).
126
+ // Ref: https://github.com/Nehonix-Team/XyPriss/issues/40
122
127
  return {
123
- path: normalizedMountPath,
124
128
  handler: entry.handler,
125
129
  };
126
130
  });
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAuCA;;AAEG;AACG,SAAU,YAAY,CACxB,MAAqB,EACrB,MAAc,EACd,IAAY,EACZ,IAAW,EACX,aAMC,EAAA;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACvC,QAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;IAC7D;IACA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAC5D;AACA,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3C,MAAM,IAAI,KAAK,CACX,CAAA,MAAA,EAAS,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,+BAAA,CAAiC,CAC3D;IACL;AAEA,IAAA,IAAI,WAAyC;AAC7C,IAAA,IAAI,QAA+C;AAEnD,IAAA,IACI,IAAI,CAAC,MAAM,IAAI,CAAC;AAChB,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;AAC3B,QAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAChB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAC/B;AACE,QAAA,WAAW,GAAG,IAAI,CAAC,CAAC,CAAqB;AACzC,QAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5B;SAAO;QACH,QAAQ,GAAG,IAAI;IACnB;AAEA,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CACX,CAAA,MAAA,EAAS,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,wCAAA,CAA0C,CACpE;IACL;AAEA,IAAA,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC;AAE1C,IAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE;AAC9B,QAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAA,CAAE,CAAC;IACnD;AAEA,IAAA,MAAM,MAAM,GAAG,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,eAAe,CAChC;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAyB;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAiB;AAE7D,IAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QAC/B,MAAM,IAAI,KAAK,CACX,CAAA,2CAAA,EAA8C,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CACjE;IACL;;AAGA,IAAA,MAAM,WAAW,GAAG,WAAW,EAAE,MAAM;AACvC,IAAA,IAAI,eAA+C;IAEnD,IAAI,WAAW,EAAE;QACb,eAAe,GAAG,qBAAqB,CACnC,WAAW,EACX,aAAa,CAAC,MAAM,CACvB;IACL;AAEA,IAAA,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CACjE,cAAc,EACd,aAAa,CAAC,OAAO,CACxB;IAED,MAAM,sBAAsB,GAAsB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACrE,QAAA,OAAO,EAAE,CAAC;AACb,KAAA,CAAC,CAAC;IAEH,IAAI,eAAe,EAAE;QACjB,sBAAsB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAChE;AAEA,IAAA,IAAI,WAAW,EAAE,KAAK,EAAE;QACpB,sBAAsB,CAAC,OAAO,CAAC;AAC3B,YAAA,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,KAAK,CAAC;AACpD,SAAA,CAAC;IACN;IAEA,IAAI,YAAY,GAAG,OAAO;AAC1B,IAAA,IAAI,WAAW,EAAE,SAAS,EAAE;QACxB,YAAY,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAQ;IAC3E;AAEA,IAAA,MAAM,kBAAkB,GAAG;QACvB,GAAG,aAAa,CAAC,UAAU;AAC3B,QAAA,GAAG,sBAAsB;KAC5B;AAED,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC1E,MAAM,OAAO,GACR,WAAW,EAAE,IAAI,EAAE,OAA8B,IAAI,eAAe;AAEzE,IAAA,MAAM,KAAK,GAAwB;QAC/B,EAAE,EAAE,WAAW,EAAE;AACjB,QAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AAC5B,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,UAAU,EAAE,kBAAkB;QAC9B,OAAO;QACP,UAAU;QACV,gBAAgB;QAChB,MAAM,EAAE,WAAW,EAAE,MAAM;QAC3B,SAAS,EAAE,WAAW,EAAE,SAAS;QACjC,SAAS,EAAE,WAAW,EAAE,SAAS;QACjC,KAAK,EAAE,WAAW,EAAE,KAAK;QACzB,IAAI,EAAE,WAAW,EAAE,IAAI;QACvB,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,IAAI,iBAAiB,CAAC,OAAO,CAAC;AACrE,QAAA,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,CAAC;QACpC,MAAM;QACN,OAAO;KACV;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAC9C,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CACrC;AACD,IAAA,IAAI,WAAW,KAAK,EAAE,EAAE;AACpB,QAAA,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC;SAAO;QACH,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC;IACtD;AAEA,IAAA,aAAa,CAAC,MAAM,CAAC,KAAK,CACtB,QAAQ,EACR,CAAA,aAAA,EAAgB,KAAK,CAAC,EAAE,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE;SACnD,OAAO,GAAG,CAAA,GAAA,EAAM,OAAO,CAAA,CAAA,CAAG,GAAG,EAAE,CAAC;SAChC,MAAM,GAAG,EAAE,GAAG,aAAa,CAAC,CACpC;AACL;AAEA;;AAEG;SACa,WAAW,CACvB,SAAiB,EACjB,SAA0B,EAC1B,aAMC,EAAA;IAED,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,YAAY,KAAK,UAAU,EAAE;AAC5D,QAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;IACvD;AAEA,IAAA,MAAM,mBAAmB,GAAG,aAAa,CAAC,SAAS,CAAC;IAEpD,SAAS,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACvC,QAAA,IAAI;YACA,MAAM,QAAQ,GAAG,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,YAAY,CAAC;AACnE,YAAA,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAC3C,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC;YAExD,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACrD,gBAAA,IAAI,KAAK,CAAC,IAAI,EAAE;oBACZ,OAAO;wBACH,IAAI,EAAE,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC;wBAChD,OAAO,EAAE,KAAK,CAAC,OAAO;qBACzB;gBACL;gBACA,OAAO;AACH,oBAAA,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACzB;AACL,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,kBAAkB,GAAG;gBACvB,GAAG,aAAa,CAAC,UAAU;AAC3B,gBAAA,GAAG,iBAAiB;aACvB;AAED,YAAA,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO;AACrC,YAAA,MAAM,YAAY,GAAwB;AACtC,gBAAA,GAAG,KAAK;AACR,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,YAAY,EAAE,QAAQ;gBACtB,OAAO;gBACP,UAAU;gBACV,gBAAgB;AAChB,gBAAA,UAAU,EAAE,kBAAkB;gBAC9B,OAAO,EAAE,CACL,GAAkB,EAClB,GAAmB,EACnB,IAAS,KACT;AACA,oBAAA,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE;oBACrC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC;oBACzD,OAAO,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;gBAC1C,CAAC;aACJ;AAED,YAAA,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3C;QAAE,OAAO,KAAK,EAAE;AACZ,YAAA,aAAa,CAAC,MAAM,CAAC,KAAK,CACtB,QAAQ,EACR,CAAA,sBAAA,EAAyB,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAA,CAAE,CAClE;AACD,YAAA,MAAM,KAAK;QACf;AACJ,IAAA,CAAC,CAAC;AACN;;;;"}
1
+ {"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1604,6 +1604,15 @@ interface MaliciousUrlScannerConfig {
1604
1604
  * - "log": Allow the request but log a security warning
1605
1605
  */
1606
1606
  mode?: "block" | "log";
1607
+ /**
1608
+ * Paths or regex patterns to exclude from malicious URL scanning
1609
+ * e.g. ["/static/**", "/tmp-storage/**", /^\/api\/presence\//]
1610
+ */
1611
+ excludePaths?: (string | RegExp)[];
1612
+ /**
1613
+ * Pattern types to ignore (e.g. ["encoded_payload", "suspicious_param_name"])
1614
+ */
1615
+ ignorePatterns?: string[];
1607
1616
  /** Custom options passed directly to [StruLink](https://github.com/Nehonix-Team/strulink)'s `scanUrl` method */
1608
1617
  options?: MaliciousPatternOptions;
1609
1618
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xypriss",
3
- "version": "9.12.44",
3
+ "version": "9.12.46",
4
4
  "description": "XyPriss is a high-performance, TypeScript-first hyper-system web framework powered by a native Go core (XHSC), featuring robust multi-tenant sandboxing, secure native file streaming, and zero Express dependencies.",
5
5
  "author": {
6
6
  "DEV.to": "https://dev.to/nehonix",