xypriss 1.3.8 → 2.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 (221) hide show
  1. package/README.md +232 -254
  2. package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +10 -0
  3. package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
  4. package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +10 -0
  5. package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
  6. package/dist/cjs/mods/security/src/components/cache/index.js +10 -74
  7. package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
  8. package/dist/cjs/mods/security/src/components/fortified-function/index.js +9 -0
  9. package/dist/cjs/mods/security/src/components/fortified-function/index.js.map +1 -1
  10. package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
  11. package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
  12. package/dist/cjs/mods/security/src/core/crypto.js +14 -0
  13. package/dist/cjs/mods/security/src/core/crypto.js.map +1 -1
  14. package/dist/cjs/mods/security/src/index.js +10 -4
  15. package/dist/cjs/mods/security/src/index.js.map +1 -1
  16. package/dist/cjs/shared/logger/Logger.js +374 -29
  17. package/dist/cjs/shared/logger/Logger.js.map +1 -1
  18. package/dist/cjs/src/cluster/bun-cluster-manager.js +91 -1
  19. package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -1
  20. package/dist/cjs/src/cluster/cluster-manager.js +15 -3
  21. package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
  22. package/dist/cjs/src/cluster/modules/AutoScaler.js +4 -4
  23. package/dist/cjs/src/cluster/modules/AutoScaler.js.map +1 -1
  24. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +2 -2
  25. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
  26. package/dist/cjs/src/cluster/modules/EventLoopMonitor.js +270 -0
  27. package/dist/cjs/src/cluster/modules/EventLoopMonitor.js.map +1 -0
  28. package/dist/cjs/src/cluster/modules/GCStatsTracker.js +200 -0
  29. package/dist/cjs/src/cluster/modules/GCStatsTracker.js.map +1 -0
  30. package/dist/cjs/src/cluster/modules/HeapStatsCollector.js +111 -0
  31. package/dist/cjs/src/cluster/modules/HeapStatsCollector.js.map +1 -0
  32. package/dist/cjs/src/cluster/modules/NetworkTracker.js +162 -0
  33. package/dist/cjs/src/cluster/modules/NetworkTracker.js.map +1 -0
  34. package/dist/cjs/src/cluster/modules/ThroughputCalculator.js +186 -0
  35. package/dist/cjs/src/cluster/modules/ThroughputCalculator.js.map +1 -0
  36. package/dist/cjs/src/cluster/modules/WorkerManager.js +14 -15
  37. package/dist/cjs/src/cluster/modules/WorkerManager.js.map +1 -1
  38. package/dist/cjs/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
  39. package/dist/cjs/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
  40. package/dist/cjs/src/index.js +55 -61
  41. package/dist/cjs/src/index.js.map +1 -1
  42. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +281 -0
  43. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
  44. package/dist/cjs/src/middleware/built-in/index.js +325 -0
  45. package/dist/cjs/src/middleware/built-in/index.js.map +1 -0
  46. package/dist/cjs/src/middleware/built-in/sqlInjection.js +335 -0
  47. package/dist/cjs/src/middleware/built-in/sqlInjection.js.map +1 -0
  48. package/dist/cjs/src/middleware/safe-json-middleware.js +1 -1
  49. package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
  50. package/dist/cjs/src/middleware/security-middleware.js +447 -332
  51. package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
  52. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
  53. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
  54. package/dist/cjs/src/plugins/modules/index.js +9 -3
  55. package/dist/cjs/src/plugins/modules/index.js.map +1 -1
  56. package/dist/cjs/src/quick-start.js +0 -4
  57. package/dist/cjs/src/quick-start.js.map +1 -1
  58. package/dist/cjs/src/server/FastServer.js +94 -412
  59. package/dist/cjs/src/server/FastServer.js.map +1 -1
  60. package/dist/cjs/src/server/ServerFactory.js +69 -64
  61. package/dist/cjs/src/server/ServerFactory.js.map +1 -1
  62. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +31 -5
  63. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  64. package/dist/cjs/src/server/components/fastapi/PerformanceManager.js +1 -1
  65. package/dist/cjs/src/server/components/fastapi/PerformanceManager.js.map +1 -1
  66. package/dist/cjs/src/server/components/fastapi/RouteManager.js +0 -82
  67. package/dist/cjs/src/server/components/fastapi/RouteManager.js.map +1 -1
  68. package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js +206 -0
  69. package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
  70. package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +3 -28
  71. package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
  72. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +265 -0
  73. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
  74. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
  75. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
  76. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
  77. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
  78. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +503 -0
  79. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
  80. package/dist/cjs/src/server/const/default.js +23 -17
  81. package/dist/cjs/src/server/const/default.js.map +1 -1
  82. package/dist/cjs/src/server/core/HttpServer.js +500 -0
  83. package/dist/cjs/src/server/core/HttpServer.js.map +1 -0
  84. package/dist/cjs/src/server/core/XyprissApp.js +679 -0
  85. package/dist/cjs/src/server/core/XyprissApp.js.map +1 -0
  86. package/dist/cjs/src/server/handlers/NotFoundHandler.js +1 -1
  87. package/dist/cjs/src/server/handlers/NotFoundHandler.js.map +1 -1
  88. package/dist/cjs/src/server/middleware/MiddlewareManager.js +191 -0
  89. package/dist/cjs/src/server/middleware/MiddlewareManager.js.map +1 -0
  90. package/dist/cjs/src/server/routing/Router.js +341 -0
  91. package/dist/cjs/src/server/routing/Router.js.map +1 -0
  92. package/dist/cjs/src/server/utils/PortManager.js +1 -0
  93. package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
  94. package/dist/cjs/src/server/utils/forceClosePort.js +294 -88
  95. package/dist/cjs/src/server/utils/forceClosePort.js.map +1 -1
  96. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +10 -0
  97. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
  98. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +10 -0
  99. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
  100. package/dist/esm/mods/security/src/components/cache/index.js +11 -72
  101. package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
  102. package/dist/esm/mods/security/src/components/fortified-function/index.js +9 -0
  103. package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -1
  104. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
  105. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
  106. package/dist/esm/mods/security/src/core/crypto.js +14 -0
  107. package/dist/esm/mods/security/src/core/crypto.js.map +1 -1
  108. package/dist/esm/mods/security/src/index.js +11 -2
  109. package/dist/esm/mods/security/src/index.js.map +1 -1
  110. package/dist/esm/shared/logger/Logger.js +374 -29
  111. package/dist/esm/shared/logger/Logger.js.map +1 -1
  112. package/dist/esm/src/cluster/bun-cluster-manager.js +91 -1
  113. package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -1
  114. package/dist/esm/src/cluster/cluster-manager.js +15 -3
  115. package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
  116. package/dist/esm/src/cluster/modules/AutoScaler.js +4 -4
  117. package/dist/esm/src/cluster/modules/AutoScaler.js.map +1 -1
  118. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +2 -2
  119. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
  120. package/dist/esm/src/cluster/modules/EventLoopMonitor.js +268 -0
  121. package/dist/esm/src/cluster/modules/EventLoopMonitor.js.map +1 -0
  122. package/dist/esm/src/cluster/modules/GCStatsTracker.js +198 -0
  123. package/dist/esm/src/cluster/modules/GCStatsTracker.js.map +1 -0
  124. package/dist/esm/src/cluster/modules/HeapStatsCollector.js +109 -0
  125. package/dist/esm/src/cluster/modules/HeapStatsCollector.js.map +1 -0
  126. package/dist/esm/src/cluster/modules/NetworkTracker.js +160 -0
  127. package/dist/esm/src/cluster/modules/NetworkTracker.js.map +1 -0
  128. package/dist/esm/src/cluster/modules/ThroughputCalculator.js +184 -0
  129. package/dist/esm/src/cluster/modules/ThroughputCalculator.js.map +1 -0
  130. package/dist/esm/src/cluster/modules/WorkerManager.js +14 -14
  131. package/dist/esm/src/cluster/modules/WorkerManager.js.map +1 -1
  132. package/dist/esm/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
  133. package/dist/esm/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
  134. package/dist/esm/src/index.js +41 -11
  135. package/dist/esm/src/index.js.map +1 -1
  136. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +279 -0
  137. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
  138. package/dist/esm/src/middleware/built-in/index.js +323 -0
  139. package/dist/esm/src/middleware/built-in/index.js.map +1 -0
  140. package/dist/esm/src/middleware/built-in/sqlInjection.js +333 -0
  141. package/dist/esm/src/middleware/built-in/sqlInjection.js.map +1 -0
  142. package/dist/esm/src/middleware/safe-json-middleware.js +1 -1
  143. package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
  144. package/dist/esm/src/middleware/security-middleware.js +447 -332
  145. package/dist/esm/src/middleware/security-middleware.js.map +1 -1
  146. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
  147. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
  148. package/dist/esm/src/plugins/modules/index.js +9 -3
  149. package/dist/esm/src/plugins/modules/index.js.map +1 -1
  150. package/dist/esm/src/quick-start.js +0 -4
  151. package/dist/esm/src/quick-start.js.map +1 -1
  152. package/dist/esm/src/server/FastServer.js +94 -412
  153. package/dist/esm/src/server/FastServer.js.map +1 -1
  154. package/dist/esm/src/server/ServerFactory.js +70 -61
  155. package/dist/esm/src/server/ServerFactory.js.map +1 -1
  156. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +31 -5
  157. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  158. package/dist/esm/src/server/components/fastapi/PerformanceManager.js +1 -1
  159. package/dist/esm/src/server/components/fastapi/PerformanceManager.js.map +1 -1
  160. package/dist/esm/src/server/components/fastapi/RouteManager.js +0 -82
  161. package/dist/esm/src/server/components/fastapi/RouteManager.js.map +1 -1
  162. package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js +204 -0
  163. package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
  164. package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +2 -27
  165. package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
  166. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +263 -0
  167. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
  168. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
  169. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
  170. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
  171. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
  172. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +501 -0
  173. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
  174. package/dist/esm/src/server/const/default.js +23 -17
  175. package/dist/esm/src/server/const/default.js.map +1 -1
  176. package/dist/esm/src/server/core/HttpServer.js +498 -0
  177. package/dist/esm/src/server/core/HttpServer.js.map +1 -0
  178. package/dist/esm/src/server/core/XyprissApp.js +677 -0
  179. package/dist/esm/src/server/core/XyprissApp.js.map +1 -0
  180. package/dist/esm/src/server/handlers/NotFoundHandler.js +1 -1
  181. package/dist/esm/src/server/handlers/NotFoundHandler.js.map +1 -1
  182. package/dist/esm/src/server/middleware/MiddlewareManager.js +189 -0
  183. package/dist/esm/src/server/middleware/MiddlewareManager.js.map +1 -0
  184. package/dist/esm/src/server/routing/Router.js +339 -0
  185. package/dist/esm/src/server/routing/Router.js.map +1 -0
  186. package/dist/esm/src/server/utils/PortManager.js +1 -0
  187. package/dist/esm/src/server/utils/PortManager.js.map +1 -1
  188. package/dist/esm/src/server/utils/forceClosePort.js +294 -88
  189. package/dist/esm/src/server/utils/forceClosePort.js.map +1 -1
  190. package/dist/index.d.ts +3363 -5311
  191. package/package.json +39 -28
  192. package/dist/cjs/src/cluster/index.js +0 -361
  193. package/dist/cjs/src/cluster/index.js.map +0 -1
  194. package/dist/cjs/src/cluster/modules/ClusterFactory.js +0 -539
  195. package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +0 -1
  196. package/dist/cjs/src/cluster/modules/LoadBalancer.js.map +0 -1
  197. package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -668
  198. package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
  199. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -347
  200. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
  201. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -204
  202. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
  203. package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js +0 -953
  204. package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
  205. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -56
  206. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
  207. package/dist/esm/src/cluster/index.js +0 -339
  208. package/dist/esm/src/cluster/index.js.map +0 -1
  209. package/dist/esm/src/cluster/modules/ClusterFactory.js +0 -511
  210. package/dist/esm/src/cluster/modules/ClusterFactory.js.map +0 -1
  211. package/dist/esm/src/cluster/modules/LoadBalancer.js.map +0 -1
  212. package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -647
  213. package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
  214. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -345
  215. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
  216. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -202
  217. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
  218. package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js +0 -951
  219. package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
  220. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -54
  221. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
@@ -0,0 +1,335 @@
1
+ 'use strict';
2
+
3
+ class SQLInjectionDetector {
4
+ constructor(config = {}) {
5
+ // High-confidence SQL injection patterns (more specific to reduce false positives)
6
+ this.highRiskPatterns = [
7
+ // Union attacks with SELECT
8
+ /(\s|^)(union|UNION)(\s)+(all\s+)?(select|SELECT)/gi,
9
+ // SQL comments at end of input or before SQL keywords
10
+ /(--|#|\/\*).*?(select|union|drop|delete|insert|update|create|alter)/gi,
11
+ /;(\s)*--.*/gi,
12
+ // Enhanced boolean injections (more comprehensive)
13
+ /(\s|^)(or|OR)(\s)+('?\d+'?\s*=\s*'?\d+'?|'[^']*'\s*=\s*'[^']*'|true|false)/gi,
14
+ /(\s|^)(and|AND)(\s)+('?\d+'?\s*=\s*'?\d+'?|'[^']*'\s*=\s*'[^']*'|true|false)/gi,
15
+ // Quote-based boolean injections
16
+ /'(\s)+(or|OR|and|AND)(\s)+'/gi,
17
+ // Comment-obfuscated patterns
18
+ /\/\*.*?\*\/(or|OR|and|AND)\/\*.*?\*\//gi,
19
+ // Time-based with specific syntax (enhanced)
20
+ /(sleep|SLEEP|waitfor|WAITFOR|delay|DELAY)\s*\(.*?\)/gi,
21
+ /(waitfor|WAITFOR)\s+(delay|DELAY)\s+'/gi,
22
+ // System stored procedures
23
+ /(exec|EXEC|execute|EXECUTE)\s+(sp_|xp_)\w+/gi,
24
+ // Information schema with specific queries
25
+ /(information_schema|INFORMATION_SCHEMA)\.(tables|columns|schemata)/gi,
26
+ // Dangerous DDL operations with semicolons
27
+ /;(\s)*(drop|DROP|delete|DELETE|truncate|TRUNCATE)\s+(table|database)/gi,
28
+ // Hex encoding of common injection strings
29
+ /0x(27|22|5C|2D|2D)/gi, // ', ", \, --
30
+ // Multiple quotes for quote breaking
31
+ /('{3,}|"{3,})/g,
32
+ // Stacked queries with dangerous operations
33
+ /;(\s)*(drop|delete|insert|update|create|alter)(\s)+/gi,
34
+ ];
35
+ // Medium risk patterns (require context analysis)
36
+ this.mediumRiskPatterns = [
37
+ // Single SQL keywords (common in legitimate text)
38
+ /\b(select|union|drop|delete|insert|update|create|alter)\b/gi,
39
+ // Simple OR/AND conditions
40
+ /\b(or|and)\s+\w+\s*=\s*\w+/gi,
41
+ // Single quotes or double quotes
42
+ /'/g,
43
+ /"/g,
44
+ // Basic SQL comments
45
+ /(--|#)/g,
46
+ // Wildcards
47
+ /[%_]/g,
48
+ ];
49
+ // Characters that are suspicious in certain contexts
50
+ this.contextSensitiveChars = /[';\"\\%_]/g;
51
+ this.config = {
52
+ strictMode: config.strictMode ?? false,
53
+ allowedChars: config.allowedChars ?? /^[a-zA-Z0-9\s\-@.!?,()]+$/,
54
+ maxLength: config.maxLength ?? 1000,
55
+ logAttempts: config.logAttempts ?? true,
56
+ contextualAnalysis: config.contextualAnalysis ?? true,
57
+ falsePositiveThreshold: config.falsePositiveThreshold ?? 0.6,
58
+ };
59
+ }
60
+ /**
61
+ * Main detection method with improved false positive handling
62
+ */
63
+ detect(input, context) {
64
+ if (!input || typeof input !== "string") {
65
+ return {
66
+ isMalicious: false,
67
+ confidence: 0,
68
+ detectedPatterns: [],
69
+ riskLevel: "LOW",
70
+ };
71
+ }
72
+ const result = {
73
+ isMalicious: false,
74
+ confidence: 0,
75
+ detectedPatterns: [],
76
+ sanitizedInput: input,
77
+ riskLevel: "LOW",
78
+ };
79
+ // Check input length (very long inputs are suspicious)
80
+ if (input.length > this.config.maxLength) {
81
+ result.confidence += 0.2; // Reduced penalty for length
82
+ result.detectedPatterns.push("Excessive length");
83
+ }
84
+ // High-risk pattern analysis (strong indicators)
85
+ let highRiskScore = 0;
86
+ this.highRiskPatterns.forEach((pattern, index) => {
87
+ const matches = input.match(pattern);
88
+ if (matches) {
89
+ const patternName = this.getHighRiskPatternName(index);
90
+ result.detectedPatterns.push(`${patternName}: ${matches.join(", ")}`);
91
+ highRiskScore += this.getHighRiskPatternWeight(index);
92
+ }
93
+ });
94
+ // Medium-risk pattern analysis (context-dependent)
95
+ let mediumRiskScore = 0;
96
+ if (this.config.contextualAnalysis) {
97
+ mediumRiskScore = this.analyzeContext(input, context || "");
98
+ }
99
+ else {
100
+ // Basic medium risk analysis without context
101
+ this.mediumRiskPatterns.forEach((pattern, index) => {
102
+ const matches = input.match(pattern);
103
+ if (matches) {
104
+ mediumRiskScore += 0.1 * matches.length; // Lower weight for medium risk
105
+ }
106
+ });
107
+ }
108
+ // Contextual analysis for legitimate use cases
109
+ const legitimacyScore = this.calculateLegitimacyScore(input);
110
+ // Calculate confidence with false positive mitigation
111
+ const rawScore = highRiskScore + mediumRiskScore * 0.3;
112
+ result.confidence = Math.max(0, rawScore - legitimacyScore);
113
+ result.confidence = Math.min(result.confidence, 1.0);
114
+ // Determine risk level and malicious status
115
+ if (result.confidence >= 0.8) {
116
+ result.riskLevel = "CRITICAL";
117
+ result.isMalicious = true;
118
+ }
119
+ else if (result.confidence >= this.config.falsePositiveThreshold) {
120
+ result.riskLevel = "HIGH";
121
+ result.isMalicious = true;
122
+ }
123
+ else if (result.confidence >= 0.3) {
124
+ result.riskLevel = "MEDIUM";
125
+ result.isMalicious = false; // Don't block medium risk by default
126
+ }
127
+ else {
128
+ result.riskLevel = "LOW";
129
+ result.isMalicious = false;
130
+ }
131
+ // Log only high confidence attempts
132
+ if (this.config.logAttempts && result.confidence >= 0.7) {
133
+ this.logAttempt(input, result);
134
+ }
135
+ // Provide sanitized version only for high-risk inputs
136
+ if (result.confidence >= 0.4) {
137
+ result.sanitizedInput = this.smartSanitize(input);
138
+ }
139
+ return result;
140
+ }
141
+ /**
142
+ * Analyze context to reduce false positives
143
+ */
144
+ analyzeContext(input, context) {
145
+ let score = 0;
146
+ // Check for legitimate business contexts
147
+ const businessContexts = [
148
+ "search",
149
+ "filter",
150
+ "name",
151
+ "description",
152
+ "comment",
153
+ "review",
154
+ "address",
155
+ "title",
156
+ "content",
157
+ "message",
158
+ "email",
159
+ ];
160
+ const isBusinessContext = businessContexts.some((ctx) => context.toLowerCase().includes(ctx));
161
+ this.mediumRiskPatterns.forEach((pattern, index) => {
162
+ const matches = input.match(pattern);
163
+ if (matches) {
164
+ let patternScore = 0.1 * matches.length;
165
+ // Reduce score for legitimate contexts
166
+ if (isBusinessContext) {
167
+ patternScore *= 0.3; // Reduce by 70%
168
+ }
169
+ // Special handling for common false positives
170
+ if (index === 0 && isBusinessContext) {
171
+ // SQL keywords in business text
172
+ patternScore *= 0.1; // Very low weight for SQL keywords in business context
173
+ }
174
+ if (index === 2 || index === 3) {
175
+ // Single quotes in names, descriptions
176
+ if (context.includes("name") ||
177
+ context.includes("description")) {
178
+ patternScore *= 0.2;
179
+ }
180
+ }
181
+ score += patternScore;
182
+ }
183
+ });
184
+ return score;
185
+ }
186
+ /**
187
+ * Calculate legitimacy score to offset false positives
188
+ */
189
+ calculateLegitimacyScore(input) {
190
+ let legitimacyScore = 0;
191
+ // Natural language indicators
192
+ const naturalWords = input.match(/\b[a-zA-Z]{3,}\b/g);
193
+ if (naturalWords && naturalWords.length > 2) {
194
+ legitimacyScore += 0.2; // Looks like natural text
195
+ }
196
+ // Check for common legitimate patterns
197
+ const legitimatePatterns = [
198
+ /^[A-Z][a-z]+\s[A-Z][a-z]+$/, // First Last name
199
+ /^[\w\.-]+@[\w\.-]+\.\w+$/, // Email
200
+ /^\d{1,5}\s\w+(\s\w+)*$/, // Address format
201
+ /^[A-Za-z0-9\s\-.,!?()]+$/, // Normal text with punctuation
202
+ ];
203
+ legitimatePatterns.forEach((pattern) => {
204
+ if (pattern.test(input)) {
205
+ legitimacyScore += 0.15;
206
+ }
207
+ });
208
+ // Length-based legitimacy (very short or very specific lengths are more suspicious)
209
+ if (input.length > 10 && input.length < 200) {
210
+ legitimacyScore += 0.1;
211
+ }
212
+ // Check for balanced quotes (legitimate text often has balanced quotes)
213
+ const singleQuotes = (input.match(/'/g) || []).length;
214
+ const doubleQuotes = (input.match(/"/g) || []).length;
215
+ if (singleQuotes % 2 === 0 && doubleQuotes % 2 === 0) {
216
+ legitimacyScore += 0.1;
217
+ }
218
+ return Math.min(legitimacyScore, 0.5); // Cap legitimacy score
219
+ }
220
+ /**
221
+ * Smart sanitization that preserves legitimate content
222
+ */
223
+ smartSanitize(input) {
224
+ if (!input)
225
+ return input;
226
+ let sanitized = input;
227
+ // Only remove obvious SQL injection patterns, not all SQL keywords
228
+ sanitized = sanitized.replace(/(--|#).*$/gm, ""); // Remove comment tails
229
+ sanitized = sanitized.replace(/\/\*.*?\*\//g, ""); // Remove /* */ comments
230
+ // Only escape quotes if they appear to be part of injection attempts
231
+ const suspiciousQuotes = /'(\s*(or|and|union|select)\s|;|\s*--)/gi;
232
+ sanitized = sanitized.replace(suspiciousQuotes, "''$1");
233
+ // Remove only dangerous control characters
234
+ sanitized = sanitized.replace(/[\x00\x1a]/g, "");
235
+ // Only remove semicolons if followed by SQL keywords
236
+ sanitized = sanitized.replace(/;(\s)*(drop|delete|insert|update|create|alter|union|select)/gi, " $2");
237
+ return sanitized.trim();
238
+ }
239
+ /**
240
+ * Validate and sanitize input, throwing error if malicious
241
+ */
242
+ validateAndSanitize(input, throwOnDetection = false) {
243
+ const result = this.detect(input);
244
+ if (result.isMalicious && throwOnDetection) {
245
+ throw new Error(`SQL injection attempt detected. Confidence: ${(result.confidence * 100).toFixed(1)}%. ` +
246
+ `Patterns: ${result.detectedPatterns.join(", ")}`);
247
+ }
248
+ return result.sanitizedInput || "";
249
+ }
250
+ /**
251
+ * Create parameterized query helper
252
+ */
253
+ createParameterizedQuery(query, params) {
254
+ // Simple parameterization helper
255
+ let parameterizedQuery = query;
256
+ const safeParams = [];
257
+ params.forEach((param, index) => {
258
+ if (typeof param === "string") {
259
+ const result = this.detect(param);
260
+ if (result.isMalicious) {
261
+ throw new Error(`Parameter ${index} contains potential SQL injection`);
262
+ }
263
+ safeParams.push(result.sanitizedInput);
264
+ }
265
+ else {
266
+ safeParams.push(param);
267
+ }
268
+ });
269
+ return { query: parameterizedQuery, params: safeParams };
270
+ }
271
+ getHighRiskPatternName(index) {
272
+ const names = [
273
+ "Union-Select attack",
274
+ "Commented injection",
275
+ "Comment with semicolon",
276
+ "Enhanced boolean OR",
277
+ "Enhanced boolean AND",
278
+ "Quote-based boolean",
279
+ "Comment-obfuscated injection",
280
+ "Time-based delay",
281
+ "WAITFOR delay attack",
282
+ "System procedure call",
283
+ "Information schema query",
284
+ "DDL with semicolon",
285
+ "Hex-encoded injection",
286
+ "Quote sequence attack",
287
+ "Stacked query attack",
288
+ ];
289
+ return names[index] || `High-risk pattern ${index}`;
290
+ }
291
+ getHighRiskPatternWeight(index) {
292
+ // Higher weights for more definitive attack patterns
293
+ const weights = [
294
+ 0.9, // Union-Select attack
295
+ 0.8, // Commented injection
296
+ 0.7, // Comment with semicolon
297
+ 0.8, // Enhanced boolean OR
298
+ 0.8, // Enhanced boolean AND
299
+ 0.7, // Quote-based boolean
300
+ 0.8, // Comment-obfuscated injection
301
+ 0.9, // Time-based delay
302
+ 0.8, // WAITFOR delay attack
303
+ 0.8, // System procedure call
304
+ 0.7, // Information schema query
305
+ 0.9, // DDL with semicolon
306
+ 0.6, // Hex-encoded injection
307
+ 0.5, // Quote sequence attack
308
+ 0.8, // Stacked query attack
309
+ ];
310
+ return weights[index] || 0.7;
311
+ }
312
+ logAttempt(input, result) {
313
+ console.warn(`SQL Injection Attempt Detected:`, {
314
+ timestamp: new Date().toISOString(),
315
+ input: input.substring(0, 100) + (input.length > 100 ? "..." : ""),
316
+ confidence: result.confidence,
317
+ patterns: result.detectedPatterns,
318
+ });
319
+ }
320
+ /**
321
+ * Update configuration
322
+ */
323
+ updateConfig(newConfig) {
324
+ this.config = { ...this.config, ...newConfig };
325
+ }
326
+ /**
327
+ * Get current configuration
328
+ */
329
+ getConfig() {
330
+ return { ...this.config };
331
+ }
332
+ }
333
+
334
+ module.exports = SQLInjectionDetector;
335
+ //# sourceMappingURL=sqlInjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlInjection.js","sources":["../../../../../src/middleware/built-in/sqlInjection.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -119,7 +119,7 @@ function createCircularRefDebugger() {
119
119
  }
120
120
  catch (error) {
121
121
  if (error.message.includes("circular")) {
122
- console.log("🔍 Circular Reference Debug Info:");
122
+ console.log("Circular Reference Debug Info:");
123
123
  console.log(" Route:", req.method, req.url);
124
124
  console.log(" Object type:", typeof obj);
125
125
  console.log(" Object constructor:", obj?.constructor?.name);
@@ -1 +1 @@
1
- {"version":3,"file":"safe-json-middleware.js","sources":["../../../../src/middleware/safe-json-middleware.ts"],"sourcesContent":[null],"names":["logger","expressStringify"],"mappings":"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"}
1
+ {"version":3,"file":"safe-json-middleware.js","sources":["../../../../src/middleware/safe-json-middleware.ts"],"sourcesContent":[null],"names":["logger","expressStringify"],"mappings":"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"}