xypriss 2.2.5 → 2.3.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.
- package/README.md +1 -3
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +9 -5
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +9 -5
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/index.js +9 -5
- package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/cjs/mods/security/src/components/fortified-function/index.js +8 -4
- package/dist/cjs/mods/security/src/components/fortified-function/index.js.map +1 -1
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +9 -5
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/cjs/mods/security/src/index.js +9 -5
- package/dist/cjs/mods/security/src/index.js.map +1 -1
- package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +31 -2
- package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
- package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +87 -30
- package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +320 -0
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/CommandInjectionDetector.js +215 -0
- package/dist/cjs/src/middleware/built-in/security/CommandInjectionDetector.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/LDAPInjectionDetector.js +96 -0
- package/dist/cjs/src/middleware/built-in/security/LDAPInjectionDetector.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/PathTraversalDetector.js +212 -0
- package/dist/cjs/src/middleware/built-in/security/PathTraversalDetector.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js +335 -0
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/XXEProtector.js +175 -0
- package/dist/cjs/src/middleware/built-in/security/XXEProtector.js.map +1 -0
- package/dist/cjs/src/middleware/security-middleware.js +249 -132
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/modules/index.js +8 -4
- package/dist/cjs/src/plugins/modules/index.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +49 -32
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +34 -1
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js +11 -2
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/cjs/src/server/const/default.js +15 -1
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +9 -5
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +9 -5
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/index.js +9 -5
- package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/esm/mods/security/src/components/fortified-function/index.js +8 -4
- package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -1
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +9 -5
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/esm/mods/security/src/index.js +9 -5
- package/dist/esm/mods/security/src/index.js.map +1 -1
- package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +31 -2
- package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +75 -18
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -1
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +318 -0
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/CommandInjectionDetector.js +213 -0
- package/dist/esm/src/middleware/built-in/security/CommandInjectionDetector.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/LDAPInjectionDetector.js +94 -0
- package/dist/esm/src/middleware/built-in/security/LDAPInjectionDetector.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/PathTraversalDetector.js +210 -0
- package/dist/esm/src/middleware/built-in/security/PathTraversalDetector.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js +333 -0
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/XXEProtector.js +173 -0
- package/dist/esm/src/middleware/built-in/security/XXEProtector.js.map +1 -0
- package/dist/esm/src/middleware/security-middleware.js +248 -131
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/modules/index.js +8 -4
- package/dist/esm/src/plugins/modules/index.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +50 -33
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +34 -1
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js +11 -2
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/esm/src/server/const/default.js +15 -1
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/index.d.ts +895 -39
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var BuiltInMiddleware = require('./built-in/BuiltInMiddleware.js');
|
|
4
4
|
var Logger = require('../../shared/logger/Logger.js');
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -9,28 +9,94 @@ var Logger = require('../../shared/logger/Logger.js');
|
|
|
9
9
|
*/
|
|
10
10
|
// Built-in security middleware using actual libraries
|
|
11
11
|
class XyPrissMiddleware {
|
|
12
|
-
constructor(app) {
|
|
12
|
+
constructor(app, securityConfig) {
|
|
13
13
|
this.registeredMiddleware = [];
|
|
14
14
|
this.middlewareCounter = 0;
|
|
15
|
+
this.securityConfig = null;
|
|
15
16
|
this.app = app;
|
|
17
|
+
this.securityConfig = securityConfig || null;
|
|
16
18
|
this.logger = new Logger.Logger({
|
|
17
19
|
components: {
|
|
18
20
|
middleware: true,
|
|
19
21
|
},
|
|
20
22
|
});
|
|
23
|
+
// DO NOT apply default middleware here - wait for explicit initialization
|
|
24
|
+
// This allows proper config merging before applying middleware
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Initialize default middleware with security configuration
|
|
28
|
+
*/
|
|
29
|
+
initializeWithConfig(securityConfig) {
|
|
30
|
+
if (securityConfig) {
|
|
31
|
+
this.securityConfig = securityConfig;
|
|
32
|
+
}
|
|
21
33
|
// Enable default security middleware by default
|
|
22
34
|
this.enableDefaultMiddleware();
|
|
23
35
|
}
|
|
24
36
|
/**
|
|
25
|
-
* Enable default built-in middleware
|
|
37
|
+
* Enable default built-in middleware based on security configuration
|
|
26
38
|
*/
|
|
27
39
|
enableDefaultMiddleware() {
|
|
28
40
|
this.logger.debug("middleware", "🔧 Enabling default security middleware...");
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
// Apply middleware based on security configuration
|
|
42
|
+
const config = this.securityConfig;
|
|
43
|
+
// Helmet (always enabled by default unless explicitly disabled)
|
|
44
|
+
if (config?.helmet !== false) {
|
|
45
|
+
this.helmet({ hidePoweredBy: true });
|
|
46
|
+
}
|
|
47
|
+
// CORS (conditionally enabled based on config)
|
|
48
|
+
if (config?.cors !== false) {
|
|
49
|
+
const corsConfig = config?.cors === true || !config?.cors
|
|
50
|
+
? { origin: true }
|
|
51
|
+
: config.cors;
|
|
52
|
+
this.cors(corsConfig);
|
|
53
|
+
}
|
|
54
|
+
// Compression (conditionally enabled)
|
|
55
|
+
if (config?.compression !== false) {
|
|
56
|
+
this.compression({ threshold: 1024 });
|
|
57
|
+
}
|
|
58
|
+
// HTTP Parameter Pollution protection (conditionally enabled)
|
|
59
|
+
if (config?.hpp !== false) {
|
|
60
|
+
this.hpp({ whitelist: ["tags", "categories"] });
|
|
61
|
+
}
|
|
62
|
+
// MongoDB sanitization (conditionally enabled)
|
|
63
|
+
if (config?.mongoSanitize !== false) {
|
|
64
|
+
this.mongoSanitize({ replaceWith: "_" });
|
|
65
|
+
}
|
|
66
|
+
// XSS protection (conditionally enabled)
|
|
67
|
+
if (config?.xss !== false) {
|
|
68
|
+
this.xss({ whiteList: { a: ["href", "title"] } });
|
|
69
|
+
}
|
|
70
|
+
// Morgan logging (conditionally enabled)
|
|
71
|
+
if (config?.morgan !== false) {
|
|
72
|
+
this.morgan({
|
|
73
|
+
skip: (_req, res) => res.statusCode < 400,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Rate limiting (conditionally enabled)
|
|
77
|
+
if (config?.rateLimit !== false) {
|
|
78
|
+
this.rateLimit({
|
|
79
|
+
windowMs: 15 * 60 * 1000,
|
|
80
|
+
max: 100,
|
|
81
|
+
message: "Too many requests, please try again later.",
|
|
82
|
+
standardHeaders: true,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// Slow down middleware (conditionally enabled)
|
|
86
|
+
if (config?.slowDown !== false) {
|
|
87
|
+
this.slowDown({
|
|
88
|
+
windowMs: 15 * 60 * 1000,
|
|
89
|
+
delayAfter: 100,
|
|
90
|
+
delayMs: (used, req) => {
|
|
91
|
+
const delayAfter = req.slowDown.limit;
|
|
92
|
+
return (used - delayAfter) * 500;
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (config?.bruteForce !== false) {
|
|
97
|
+
this.brute();
|
|
98
|
+
}
|
|
99
|
+
this.logger.debug("middleware", "✅ Default security middleware enabled based on configuration");
|
|
34
100
|
}
|
|
35
101
|
register(middleware, // Accept any type for compatibility
|
|
36
102
|
options = {}) {
|
|
@@ -72,44 +138,35 @@ class XyPrissMiddleware {
|
|
|
72
138
|
}
|
|
73
139
|
cors(config = {}) {
|
|
74
140
|
const corsConfig = typeof config === "object" ? config : {};
|
|
75
|
-
const corsMiddleware =
|
|
141
|
+
const corsMiddleware = BuiltInMiddleware.BuiltInMiddleware.cors(corsConfig);
|
|
76
142
|
return this.registerBuiltIn("cors", corsMiddleware, "high");
|
|
77
143
|
}
|
|
78
144
|
rateLimit(config = {}) {
|
|
79
145
|
const rateLimitConfig = typeof config === "object" ? config : {};
|
|
80
|
-
const rateLimitMiddleware =
|
|
146
|
+
const rateLimitMiddleware = BuiltInMiddleware.BuiltInMiddleware.rateLimit(rateLimitConfig);
|
|
81
147
|
return this.registerBuiltIn("rateLimit", rateLimitMiddleware, "high");
|
|
82
148
|
}
|
|
83
149
|
helmet(config = {}) {
|
|
84
150
|
const helmetConfig = typeof config === "object" ? config : {};
|
|
85
|
-
const helmetMiddleware =
|
|
151
|
+
const helmetMiddleware = BuiltInMiddleware.BuiltInMiddleware.helmet(helmetConfig);
|
|
86
152
|
return this.registerBuiltIn("helmet", helmetMiddleware, "critical");
|
|
87
153
|
}
|
|
88
154
|
csrf(config = {}) {
|
|
89
155
|
const csrfConfig = typeof config === "object" ? config : {};
|
|
90
|
-
const csrfMiddleware =
|
|
156
|
+
const csrfMiddleware = BuiltInMiddleware.BuiltInMiddleware.csrf(csrfConfig);
|
|
91
157
|
return this.registerBuiltIn("csrf", csrfMiddleware, "high");
|
|
92
158
|
}
|
|
93
159
|
compression(config = {}) {
|
|
94
160
|
const compressionConfig = typeof config === "object" ? config : {};
|
|
95
|
-
const compressionMiddleware =
|
|
161
|
+
const compressionMiddleware = BuiltInMiddleware.BuiltInMiddleware.compression(compressionConfig);
|
|
96
162
|
return this.registerBuiltIn("compression", compressionMiddleware, "low");
|
|
97
163
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Add Express Validator middleware
|
|
100
|
-
*/
|
|
101
|
-
validator(config = {}) {
|
|
102
|
-
const validatorConfig = typeof config === "object" ? config : {};
|
|
103
|
-
const validatorMiddleware = index.BuiltInMiddleware.validator(validatorConfig);
|
|
104
|
-
// Register the simplified validator middleware
|
|
105
|
-
return this.registerBuiltIn("validator", validatorMiddleware, "high");
|
|
106
|
-
}
|
|
107
164
|
/**
|
|
108
165
|
* Add HPP (HTTP Parameter Pollution) protection
|
|
109
166
|
*/
|
|
110
167
|
hpp(config = {}) {
|
|
111
168
|
const hppConfig = typeof config === "object" ? config : {};
|
|
112
|
-
const hppMiddleware =
|
|
169
|
+
const hppMiddleware = BuiltInMiddleware.BuiltInMiddleware.hpp(hppConfig);
|
|
113
170
|
return this.registerBuiltIn("hpp", hppMiddleware, "high");
|
|
114
171
|
}
|
|
115
172
|
/**
|
|
@@ -117,7 +174,7 @@ class XyPrissMiddleware {
|
|
|
117
174
|
*/
|
|
118
175
|
mongoSanitize(config = {}) {
|
|
119
176
|
const mongoConfig = typeof config === "object" ? config : {};
|
|
120
|
-
const mongoMiddleware =
|
|
177
|
+
const mongoMiddleware = BuiltInMiddleware.BuiltInMiddleware.mongoSanitize(mongoConfig);
|
|
121
178
|
return this.registerBuiltIn("mongoSanitize", mongoMiddleware, "high");
|
|
122
179
|
}
|
|
123
180
|
/**
|
|
@@ -125,7 +182,7 @@ class XyPrissMiddleware {
|
|
|
125
182
|
*/
|
|
126
183
|
xss(config = {}) {
|
|
127
184
|
const xssConfig = typeof config === "object" ? config : {};
|
|
128
|
-
const xssMiddleware =
|
|
185
|
+
const xssMiddleware = BuiltInMiddleware.BuiltInMiddleware.xss(xssConfig);
|
|
129
186
|
return this.registerBuiltIn("xss", xssMiddleware, "high");
|
|
130
187
|
}
|
|
131
188
|
/**
|
|
@@ -133,7 +190,7 @@ class XyPrissMiddleware {
|
|
|
133
190
|
*/
|
|
134
191
|
morgan(config = {}) {
|
|
135
192
|
const morganConfig = typeof config === "object" ? config : {};
|
|
136
|
-
const morganMiddleware =
|
|
193
|
+
const morganMiddleware = BuiltInMiddleware.BuiltInMiddleware.morgan(morganConfig);
|
|
137
194
|
return this.registerBuiltIn("morgan", morganMiddleware, "low");
|
|
138
195
|
}
|
|
139
196
|
/**
|
|
@@ -141,15 +198,15 @@ class XyPrissMiddleware {
|
|
|
141
198
|
*/
|
|
142
199
|
slowDown(config = {}) {
|
|
143
200
|
const slowDownConfig = typeof config === "object" ? config : {};
|
|
144
|
-
const slowDownMiddleware =
|
|
201
|
+
const slowDownMiddleware = BuiltInMiddleware.BuiltInMiddleware.slowDown(slowDownConfig);
|
|
145
202
|
return this.registerBuiltIn("slowDown", slowDownMiddleware, "high");
|
|
146
203
|
}
|
|
147
204
|
/**
|
|
148
205
|
* Add Express Brute middleware for brute force protection
|
|
149
206
|
*/
|
|
150
|
-
brute(config
|
|
207
|
+
brute(config) {
|
|
151
208
|
const bruteConfig = typeof config === "object" ? config : {};
|
|
152
|
-
const bruteMiddleware =
|
|
209
|
+
const bruteMiddleware = BuiltInMiddleware.BuiltInMiddleware.brute(bruteConfig);
|
|
153
210
|
return this.registerBuiltIn("brute", bruteMiddleware, "critical");
|
|
154
211
|
}
|
|
155
212
|
/**
|
|
@@ -157,7 +214,7 @@ class XyPrissMiddleware {
|
|
|
157
214
|
*/
|
|
158
215
|
multer(config = {}) {
|
|
159
216
|
const multerConfig = typeof config === "object" ? config : {};
|
|
160
|
-
const multerInstance =
|
|
217
|
+
const multerInstance = BuiltInMiddleware.BuiltInMiddleware.multer(multerConfig);
|
|
161
218
|
// Use multer.any() as the default middleware
|
|
162
219
|
return this.registerBuiltIn("multer", multerInstance.any(), "normal");
|
|
163
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyPrissMiddlewareAPI.js","sources":["../../../../src/middleware/XyPrissMiddlewareAPI.ts"],"sourcesContent":[null],"names":["Logger","BuiltInMiddleware"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"XyPrissMiddlewareAPI.js","sources":["../../../../src/middleware/XyPrissMiddlewareAPI.ts"],"sourcesContent":[null],"names":["Logger","BuiltInMiddleware"],"mappings":"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"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var helmet = require('helmet');
|
|
4
|
+
var cors = require('cors');
|
|
5
|
+
var rateLimit = require('express-rate-limit');
|
|
6
|
+
var compression = require('compression');
|
|
7
|
+
var hpp = require('hpp');
|
|
8
|
+
var mongoSanitize = require('express-mongo-sanitize');
|
|
9
|
+
var xss = require('xss');
|
|
10
|
+
var morgan = require('morgan');
|
|
11
|
+
var slowDown = require('express-slow-down');
|
|
12
|
+
var ExpressBrute = require('express-brute');
|
|
13
|
+
var multer = require('multer');
|
|
14
|
+
var csrfCsrf = require('csrf-csrf');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* XyPriss Built-in Middleware
|
|
18
|
+
* Wrappers around popular middleware libraries
|
|
19
|
+
*/
|
|
20
|
+
class BuiltInMiddleware {
|
|
21
|
+
/**
|
|
22
|
+
* Get Helmet middleware for security headers
|
|
23
|
+
*/
|
|
24
|
+
static helmet(options = {}) {
|
|
25
|
+
const defaultOptions = {
|
|
26
|
+
contentSecurityPolicy: {
|
|
27
|
+
directives: {
|
|
28
|
+
defaultSrc: ["'self'"],
|
|
29
|
+
scriptSrc: ["'self'"],
|
|
30
|
+
styleSrc: ["'self'", "'unsafe-inline'"],
|
|
31
|
+
imgSrc: ["'self'", "data:"],
|
|
32
|
+
fontSrc: ["'self'"],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
crossOriginEmbedderPolicy: true,
|
|
36
|
+
crossOriginOpenerPolicy: true,
|
|
37
|
+
crossOriginResourcePolicy: { policy: "same-origin" },
|
|
38
|
+
dnsPrefetchControl: { allow: false },
|
|
39
|
+
frameguard: { action: "deny" },
|
|
40
|
+
hidePoweredBy: true,
|
|
41
|
+
hsts: {
|
|
42
|
+
maxAge: 31536000,
|
|
43
|
+
includeSubDomains: true,
|
|
44
|
+
preload: false,
|
|
45
|
+
},
|
|
46
|
+
ieNoOpen: true,
|
|
47
|
+
noSniff: true,
|
|
48
|
+
originAgentCluster: true,
|
|
49
|
+
permittedCrossDomainPolicies: false,
|
|
50
|
+
referrerPolicy: { policy: "strict-origin-when-cross-origin" },
|
|
51
|
+
xssFilter: true,
|
|
52
|
+
};
|
|
53
|
+
const config = { ...defaultOptions, ...options };
|
|
54
|
+
return helmet(config);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get CORS middleware
|
|
58
|
+
*
|
|
59
|
+
* By default, allows all headers to be developer-friendly.
|
|
60
|
+
* Developers can restrict headers via config if needed for production.
|
|
61
|
+
*/
|
|
62
|
+
static cors(options = {}) {
|
|
63
|
+
const defaultOptions = {
|
|
64
|
+
origin: true,
|
|
65
|
+
methods: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"],
|
|
66
|
+
// Allow all headers by default - developers can restrict via config
|
|
67
|
+
// This prevents CORS issues during development
|
|
68
|
+
credentials: false,
|
|
69
|
+
maxAge: 86400, // 24 hours
|
|
70
|
+
};
|
|
71
|
+
const config = { ...defaultOptions, ...options };
|
|
72
|
+
return cors(config);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get Rate Limiting middleware
|
|
76
|
+
*/
|
|
77
|
+
static rateLimit(options = {}) {
|
|
78
|
+
const defaultOptions = {
|
|
79
|
+
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
80
|
+
max: 100, // limit each IP to 100 requests per windowMs
|
|
81
|
+
message: {
|
|
82
|
+
error: "Too many requests from this IP, please try again later.",
|
|
83
|
+
retryAfter: "Please try again later.",
|
|
84
|
+
},
|
|
85
|
+
standardHeaders: true,
|
|
86
|
+
legacyHeaders: false,
|
|
87
|
+
handler: (req, res, next, options) => {
|
|
88
|
+
const message = options?.message;
|
|
89
|
+
if (typeof message === 'string') {
|
|
90
|
+
res.status(429).json({
|
|
91
|
+
error: "Rate limit exceeded",
|
|
92
|
+
message: message,
|
|
93
|
+
retryAfter: Math.ceil((options?.windowMs || 60000) / 1000) || 900,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else if (typeof message === 'object' && message !== null) {
|
|
97
|
+
res.status(429).json({
|
|
98
|
+
...message,
|
|
99
|
+
retryAfter: Math.ceil((options?.windowMs || 60000) / 1000) || 900,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
res.status(429).json({
|
|
104
|
+
error: "Too many requests",
|
|
105
|
+
message: "Rate limit exceeded. Please try again later.",
|
|
106
|
+
retryAfter: Math.ceil((options?.windowMs || 60000) / 1000) || 900,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
const config = { ...defaultOptions, ...options };
|
|
112
|
+
return rateLimit(config);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get Compression middleware
|
|
116
|
+
*/
|
|
117
|
+
static compression(options = {}) {
|
|
118
|
+
const defaultOptions = {
|
|
119
|
+
level: 6,
|
|
120
|
+
threshold: 1024, // Only compress responses >= 1KB
|
|
121
|
+
filter: (req, res) => {
|
|
122
|
+
// Don't compress responses with this request header
|
|
123
|
+
if (req.headers["x-no-compression"]) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
// Fallback to standard filter function
|
|
127
|
+
return compression.filter(req, res);
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
const config = { ...defaultOptions, ...options };
|
|
131
|
+
return compression(config);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* CSRF protection middleware using csrf-csrf library
|
|
135
|
+
*/
|
|
136
|
+
static csrf(options = {
|
|
137
|
+
getSecret: () => "e6ac40fffc5e9399eab10f5b84fcba2c923e7f74a73b76b56c11b722671eea5e",
|
|
138
|
+
getSessionIdentifier: (req) => req.session.id,
|
|
139
|
+
}) {
|
|
140
|
+
const defaultOptions = {
|
|
141
|
+
cookieName: "__Host-psifi.x-csrf-token",
|
|
142
|
+
cookieOptions: {
|
|
143
|
+
httpOnly: true,
|
|
144
|
+
sameSite: "strict",
|
|
145
|
+
secure: process.env.NODE_ENV === "production",
|
|
146
|
+
maxAge: 3600000, // 1 hour
|
|
147
|
+
},
|
|
148
|
+
size: 64,
|
|
149
|
+
ignoredMethods: ["GET", "HEAD", "OPTIONS"],
|
|
150
|
+
getTokenFromRequest: (req) => {
|
|
151
|
+
return (req.headers["x-csrf-token"] ||
|
|
152
|
+
req.body?._csrf ||
|
|
153
|
+
req.query?._csrf);
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
const config = { ...defaultOptions, ...options };
|
|
157
|
+
const { doubleCsrfProtection } = csrfCsrf.doubleCsrf(config);
|
|
158
|
+
// Return the protection middleware
|
|
159
|
+
return doubleCsrfProtection;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get HPP (HTTP Parameter Pollution) protection middleware
|
|
163
|
+
*/
|
|
164
|
+
static hpp(options = {}) {
|
|
165
|
+
const defaultOptions = {
|
|
166
|
+
whitelist: ["tags", "categories"], // Allow arrays for these parameters
|
|
167
|
+
};
|
|
168
|
+
const config = { ...defaultOptions, ...options };
|
|
169
|
+
return hpp(config);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get MongoDB injection protection middleware
|
|
173
|
+
*/
|
|
174
|
+
static mongoSanitize(options = {}) {
|
|
175
|
+
const defaultOptions = {
|
|
176
|
+
replaceWith: "_",
|
|
177
|
+
onSanitize: (key, value) => {
|
|
178
|
+
console.warn(`[MongoSanitize] Sanitized key: ${key}, value: ${value}`);
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
const config = { ...defaultOptions, ...options };
|
|
182
|
+
return mongoSanitize(config);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get XSS protection middleware
|
|
186
|
+
*/
|
|
187
|
+
static xss(options = {}) {
|
|
188
|
+
const defaultOptions = {
|
|
189
|
+
whiteList: {
|
|
190
|
+
a: ["href", "title"],
|
|
191
|
+
b: [],
|
|
192
|
+
i: [],
|
|
193
|
+
strong: [],
|
|
194
|
+
em: [],
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
const config = { ...defaultOptions, ...options };
|
|
198
|
+
return (req, _res, next) => {
|
|
199
|
+
// Sanitize request body
|
|
200
|
+
if (req.body) {
|
|
201
|
+
req.body = this.sanitizeObject(req.body, config);
|
|
202
|
+
}
|
|
203
|
+
// Sanitize query parameters
|
|
204
|
+
if (req.query) {
|
|
205
|
+
req.query = this.sanitizeObject(req.query, config);
|
|
206
|
+
}
|
|
207
|
+
next();
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get Morgan logging middleware
|
|
212
|
+
*/
|
|
213
|
+
static morgan(options = {}) {
|
|
214
|
+
const defaultFormat = options.format || "combined";
|
|
215
|
+
const defaultOptions = {
|
|
216
|
+
skip: (_req, res) => res.statusCode < 400, // Only log errors by default
|
|
217
|
+
stream: process.stdout,
|
|
218
|
+
};
|
|
219
|
+
const config = { ...defaultOptions, ...options };
|
|
220
|
+
return morgan(defaultFormat, config);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get Slow Down middleware for progressive delays
|
|
224
|
+
*/
|
|
225
|
+
static slowDown(options = {}) {
|
|
226
|
+
const defaultOptions = {
|
|
227
|
+
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
228
|
+
delayAfter: 2, // Allow 2 requests per windowMs without delay
|
|
229
|
+
delayMs: 500, // Add 500ms delay per request after delayAfter
|
|
230
|
+
maxDelayMs: 20000, // Maximum delay of 20 seconds
|
|
231
|
+
skipFailedRequests: false,
|
|
232
|
+
skipSuccessfulRequests: false,
|
|
233
|
+
};
|
|
234
|
+
const config = { ...defaultOptions, ...options };
|
|
235
|
+
return slowDown(config);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get Express Brute middleware for brute force protection
|
|
239
|
+
*/
|
|
240
|
+
static brute(options = {
|
|
241
|
+
prefix: "nehonix.xypriss.brute",
|
|
242
|
+
}) {
|
|
243
|
+
const store = new ExpressBrute.MemoryStore();
|
|
244
|
+
const defaultOptions = {
|
|
245
|
+
freeRetries: 2,
|
|
246
|
+
minWait: 5 * 60 * 1000, // 5 minutes
|
|
247
|
+
maxWait: 60 * 60 * 1000, // 1 hour
|
|
248
|
+
lifetime: 24 * 60 * 60, // 1 day (in seconds)
|
|
249
|
+
failCallback: (_req, res, _next, nextValidRequestDate) => {
|
|
250
|
+
res.status(429).json({
|
|
251
|
+
error: "Too many failed attempts",
|
|
252
|
+
message: "Account temporarily locked due to too many failed attempts",
|
|
253
|
+
nextValidRequestDate: nextValidRequestDate,
|
|
254
|
+
});
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
const config = { ...defaultOptions, ...options };
|
|
258
|
+
const bruteforce = new ExpressBrute(store, config);
|
|
259
|
+
return bruteforce.prevent;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get Multer middleware for file uploads
|
|
263
|
+
*/
|
|
264
|
+
static multer(options = {}) {
|
|
265
|
+
const defaultOptions = {
|
|
266
|
+
limits: {
|
|
267
|
+
fileSize: 5 * 1024 * 1024, // 5MB limit
|
|
268
|
+
files: 5, // Maximum 5 files
|
|
269
|
+
},
|
|
270
|
+
fileFilter: (_req, file, cb) => {
|
|
271
|
+
// Allow only specific file types
|
|
272
|
+
const allowedTypes = /jpeg|jpg|png|gif|pdf|doc|docx/;
|
|
273
|
+
const extname = allowedTypes.test(file.originalname.toLowerCase());
|
|
274
|
+
const mimetype = allowedTypes.test(file.mimetype);
|
|
275
|
+
if (mimetype && extname) {
|
|
276
|
+
return cb(null, true);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
cb(new Error("Invalid file type. Only images and documents are allowed."));
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
const config = { ...defaultOptions, ...options };
|
|
284
|
+
return multer(config);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get all default security middleware
|
|
288
|
+
*/
|
|
289
|
+
static security(options = {}) {
|
|
290
|
+
return {
|
|
291
|
+
helmet: this.helmet(options.helmet),
|
|
292
|
+
cors: this.cors(options.cors),
|
|
293
|
+
rateLimit: this.rateLimit(options.rateLimit),
|
|
294
|
+
compression: this.compression(options.compression),
|
|
295
|
+
csrf: this.csrf(options.csrf),
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
// Helper method for XSS sanitization
|
|
299
|
+
static sanitizeObject(obj, config) {
|
|
300
|
+
if (typeof obj === "string") {
|
|
301
|
+
return xss(obj, config);
|
|
302
|
+
}
|
|
303
|
+
else if (Array.isArray(obj)) {
|
|
304
|
+
return obj.map((item) => this.sanitizeObject(item, config));
|
|
305
|
+
}
|
|
306
|
+
else if (obj && typeof obj === "object") {
|
|
307
|
+
const sanitized = {};
|
|
308
|
+
for (const key in obj) {
|
|
309
|
+
if (obj.hasOwnProperty(key)) {
|
|
310
|
+
sanitized[key] = this.sanitizeObject(obj[key], config);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return sanitized;
|
|
314
|
+
}
|
|
315
|
+
return obj;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
exports.BuiltInMiddleware = BuiltInMiddleware;
|
|
320
|
+
//# sourceMappingURL=BuiltInMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltInMiddleware.js","sources":["../../../../../src/middleware/built-in/BuiltInMiddleware.ts"],"sourcesContent":[null],"names":["doubleCsrf"],"mappings":"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"}
|