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