xypriss 3.1.0 → 3.2.1
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/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +3 -2
- package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +16 -23
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/security/MobileOnlyProtector.js +504 -0
- package/dist/cjs/src/middleware/built-in/security/MobileOnlyProtector.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/RequestSignatureProtector.js +20 -4
- package/dist/cjs/src/middleware/built-in/security/RequestSignatureProtector.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +114 -19
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/server/const/default.js +43 -5
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +3 -2
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -1
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +16 -23
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/MobileOnlyProtector.js +502 -0
- package/dist/esm/src/middleware/built-in/security/MobileOnlyProtector.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/RequestSignatureProtector.js +20 -4
- package/dist/esm/src/middleware/built-in/security/RequestSignatureProtector.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +114 -19
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/server/const/default.js +43 -5
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/index.d.ts +174 -4
- package/package.json +1 -1
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var Logger = require('../../../../shared/logger/Logger.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Mobile-Only Access Protector
|
|
7
|
+
* Blocks browser requests and allows only mobile app access.
|
|
8
|
+
* Multi-layered detection with strict validation to avoid false positives.
|
|
9
|
+
*
|
|
10
|
+
* @example Enable with defaults:
|
|
11
|
+
* ```typescript
|
|
12
|
+
* mobileOnly: true
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @example Custom configuration:
|
|
16
|
+
* ```typescript
|
|
17
|
+
* mobileOnly: {
|
|
18
|
+
* blockBrowserIndicators: true,
|
|
19
|
+
* allowedPlatforms: ['ios', 'android'],
|
|
20
|
+
* requireMobileHeaders: true,
|
|
21
|
+
* customUserAgentPatterns: [/MyApp/i],
|
|
22
|
+
* errorMessage: "Mobile app access required"
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
class MobileOnlyProtector {
|
|
27
|
+
constructor(config = {}, logger) {
|
|
28
|
+
// Mobile platform indicators
|
|
29
|
+
this.mobilePatterns = [
|
|
30
|
+
/\bAndroid\b/i,
|
|
31
|
+
/\biPhone\b/i,
|
|
32
|
+
/\biPad\b/i,
|
|
33
|
+
/\biPod\b/i,
|
|
34
|
+
/\bBlackBerry\b/i,
|
|
35
|
+
/\bWindows Phone\b/i,
|
|
36
|
+
/\bReactNative\b/i,
|
|
37
|
+
/\bExpo\b/i,
|
|
38
|
+
/\bDalvik\b/i, // Android runtime
|
|
39
|
+
];
|
|
40
|
+
// Android HTTP clients
|
|
41
|
+
this.androidHttpClients = [
|
|
42
|
+
/\bokhttp\b/i, // OkHttp
|
|
43
|
+
/\bretrofit\b/i, // Retrofit
|
|
44
|
+
/\bktor-client\b/i, // Ktor Client
|
|
45
|
+
/\bktor\b/i, // Ktor (short form)
|
|
46
|
+
/\bvolley\b/i, // Volley
|
|
47
|
+
/\bHttpUrlConnection\b/i, // HttpUrlConnection
|
|
48
|
+
/\bAndroidHttpClient\b/i, // Generic Android HTTP
|
|
49
|
+
];
|
|
50
|
+
// iOS HTTP clients
|
|
51
|
+
this.iosHttpClients = [
|
|
52
|
+
/\bAlamofire\b/i, // Alamofire
|
|
53
|
+
/\bAFNetworking\b/i, // AFNetworking
|
|
54
|
+
/\bCFNetwork\b/i, // CFNetwork (iOS networking framework)
|
|
55
|
+
/\bURLSession\b/i, // URLSession
|
|
56
|
+
/\bNSURLSession\b/i, // NSURLSession (Objective-C)
|
|
57
|
+
/\bMoya\b/i, // Moya
|
|
58
|
+
/\bSiesta\b/i, // Siesta
|
|
59
|
+
];
|
|
60
|
+
// Cross-platform mobile frameworks
|
|
61
|
+
this.mobileFameworks = [
|
|
62
|
+
/\bFlutter\b/i,
|
|
63
|
+
/\bDart\b/i, // Dart (Flutter's language)
|
|
64
|
+
/\bReact Native\b/i,
|
|
65
|
+
/\bReactNative\b/i,
|
|
66
|
+
/\bExpo\b/i,
|
|
67
|
+
/\bCapacitor\b/i, // Ionic Capacitor
|
|
68
|
+
/\bCordova\b/i, // Apache Cordova
|
|
69
|
+
/\bIonic\b/i, // Ionic Framework
|
|
70
|
+
/\bXamarin\b/i, // Xamarin
|
|
71
|
+
];
|
|
72
|
+
// Comprehensive browser indicators (aggressive detection)
|
|
73
|
+
this.browserIndicators = [
|
|
74
|
+
/\bMozilla\b/i,
|
|
75
|
+
/\bChrome\b/i,
|
|
76
|
+
/\bChromium\b/i,
|
|
77
|
+
/\bSafari\b/i,
|
|
78
|
+
/\bFirefox\b/i,
|
|
79
|
+
/\bEdge\b/i,
|
|
80
|
+
/\bEdg\b/i,
|
|
81
|
+
/\bOpera\b/i,
|
|
82
|
+
/\bOPR\b/i,
|
|
83
|
+
/\bBrave\b/i,
|
|
84
|
+
/\bVivaldi\b/i,
|
|
85
|
+
/\bSeaMonkey\b/i,
|
|
86
|
+
/\bIceweasel\b/i,
|
|
87
|
+
/\bEpiphany\b/i,
|
|
88
|
+
/\bMidori\b/i,
|
|
89
|
+
/\bKonqueror\b/i,
|
|
90
|
+
/\bWebKit\b/i,
|
|
91
|
+
/\bGecko\b/i,
|
|
92
|
+
/\bTrident\b/i,
|
|
93
|
+
/\bPresto\b/i,
|
|
94
|
+
/\bEdgeHTML\b/i,
|
|
95
|
+
/\bNetscape\b/i,
|
|
96
|
+
/\bIE\b/i,
|
|
97
|
+
/\bMSIE\b/i,
|
|
98
|
+
/\brv:11/i, // IE11
|
|
99
|
+
/\bElectron\b/i, // Desktop apps
|
|
100
|
+
/\bPhantomJS\b/i, // Headless browser
|
|
101
|
+
/\bHeadlessChrome\b/i,
|
|
102
|
+
];
|
|
103
|
+
// Known desktop OS indicators
|
|
104
|
+
this.desktopIndicators = [
|
|
105
|
+
/\bWindows NT\b/i,
|
|
106
|
+
/\bMac OS X\b/i,
|
|
107
|
+
/\bMacintosh\b/i,
|
|
108
|
+
/\bLinux x86_64\b/i,
|
|
109
|
+
/\bLinux i686\b/i,
|
|
110
|
+
/\bX11\b/i,
|
|
111
|
+
/\bWin64\b/i,
|
|
112
|
+
/\bWOW64\b/i,
|
|
113
|
+
/\bUbuntu\b/i,
|
|
114
|
+
/\bFedora\b/i,
|
|
115
|
+
/\bDebian\b/i,
|
|
116
|
+
];
|
|
117
|
+
// Suspicious patterns often used in spoofing (excluding legitimate mobile clients)
|
|
118
|
+
this.suspiciousPatterns = [
|
|
119
|
+
/\bcurl\b/i,
|
|
120
|
+
/\bwget\b/i,
|
|
121
|
+
/\bPython\b/i,
|
|
122
|
+
/\bJava(?!Script)\b/i, // Java but not JavaScript
|
|
123
|
+
/\bperl\b/i,
|
|
124
|
+
/\bruby\b/i,
|
|
125
|
+
/\bPostman\b/i,
|
|
126
|
+
/\bInsomnia\b/i,
|
|
127
|
+
/\bHTTPie\b/i,
|
|
128
|
+
/\baxios\b/i,
|
|
129
|
+
/\bnode-fetch\b/i,
|
|
130
|
+
/\bgot\b/i,
|
|
131
|
+
/\bsuperagent\b/i,
|
|
132
|
+
/\brequest\b/i,
|
|
133
|
+
/\bbot\b/i,
|
|
134
|
+
/\bcrawler\b/i,
|
|
135
|
+
/\bspider\b/i,
|
|
136
|
+
/\bscraper\b/i,
|
|
137
|
+
];
|
|
138
|
+
// Mobile-specific headers that indicate app requests
|
|
139
|
+
this.mobileHeaders = [
|
|
140
|
+
"x-requested-with",
|
|
141
|
+
"x-mobile-app",
|
|
142
|
+
"x-app-platform",
|
|
143
|
+
"x-app-version",
|
|
144
|
+
"expo-version",
|
|
145
|
+
"react-native-version",
|
|
146
|
+
"x-flutter-version",
|
|
147
|
+
"x-ios-bundle-identifier",
|
|
148
|
+
"x-android-package",
|
|
149
|
+
];
|
|
150
|
+
this.config = {
|
|
151
|
+
enable: config.enable ?? true,
|
|
152
|
+
blockBrowserIndicators: config.blockBrowserIndicators ?? true,
|
|
153
|
+
allowedPlatforms: config.allowedPlatforms ?? [
|
|
154
|
+
"ios",
|
|
155
|
+
"android",
|
|
156
|
+
"react-native",
|
|
157
|
+
"expo",
|
|
158
|
+
],
|
|
159
|
+
requireMobileHeaders: config.requireMobileHeaders ?? false,
|
|
160
|
+
customUserAgentPatterns: config.customUserAgentPatterns ?? [],
|
|
161
|
+
debug: config.debug ?? false,
|
|
162
|
+
errorMessage: config.errorMessage ??
|
|
163
|
+
"Mobile app access required. Browser requests are not allowed.",
|
|
164
|
+
statusCode: config.statusCode ?? 403,
|
|
165
|
+
caseSensitive: config.caseSensitive ?? false,
|
|
166
|
+
trimUserAgent: config.trimUserAgent ?? true,
|
|
167
|
+
};
|
|
168
|
+
this.logger =
|
|
169
|
+
logger ||
|
|
170
|
+
new Logger.Logger({
|
|
171
|
+
components: { security: true },
|
|
172
|
+
types: { debug: true },
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Normalize User-Agent string
|
|
177
|
+
*/
|
|
178
|
+
normalizeUserAgent(userAgent) {
|
|
179
|
+
if (!userAgent)
|
|
180
|
+
return "";
|
|
181
|
+
let normalized = userAgent;
|
|
182
|
+
if (this.config.trimUserAgent) {
|
|
183
|
+
normalized = normalized.trim();
|
|
184
|
+
}
|
|
185
|
+
// Remove excessive whitespace
|
|
186
|
+
normalized = normalized.replace(/\s+/g, " ");
|
|
187
|
+
return normalized;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Check for Android HTTP client indicators
|
|
191
|
+
*/
|
|
192
|
+
hasAndroidHttpClient(userAgent) {
|
|
193
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
194
|
+
return this.androidHttpClients.some((pattern) => {
|
|
195
|
+
const regex = new RegExp(pattern.source, flags);
|
|
196
|
+
return regex.test(userAgent);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Check for iOS HTTP client indicators
|
|
201
|
+
*/
|
|
202
|
+
hasIosHttpClient(userAgent) {
|
|
203
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
204
|
+
return this.iosHttpClients.some((pattern) => {
|
|
205
|
+
const regex = new RegExp(pattern.source, flags);
|
|
206
|
+
return regex.test(userAgent);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Check for mobile framework indicators
|
|
211
|
+
*/
|
|
212
|
+
hasMobileFramework(userAgent) {
|
|
213
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
214
|
+
return this.mobileFameworks.some((pattern) => {
|
|
215
|
+
const regex = new RegExp(pattern.source, flags);
|
|
216
|
+
return regex.test(userAgent);
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Check for browser indicators in User-Agent
|
|
221
|
+
*/
|
|
222
|
+
hasBrowserIndicators(userAgent) {
|
|
223
|
+
if (!this.config.blockBrowserIndicators) {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
227
|
+
return this.browserIndicators.some((pattern) => {
|
|
228
|
+
const regex = new RegExp(pattern.source, flags);
|
|
229
|
+
return regex.test(userAgent);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Check for desktop OS indicators
|
|
234
|
+
*/
|
|
235
|
+
hasDesktopIndicators(userAgent) {
|
|
236
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
237
|
+
return this.desktopIndicators.some((pattern) => {
|
|
238
|
+
const regex = new RegExp(pattern.source, flags);
|
|
239
|
+
return regex.test(userAgent);
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Check for suspicious patterns (bots, tools, spoofing attempts)
|
|
244
|
+
*/
|
|
245
|
+
hasSuspiciousPatterns(userAgent) {
|
|
246
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
247
|
+
return this.suspiciousPatterns.some((pattern) => {
|
|
248
|
+
const regex = new RegExp(pattern.source, flags);
|
|
249
|
+
return regex.test(userAgent);
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Check if User-Agent matches custom patterns
|
|
254
|
+
*/
|
|
255
|
+
matchesCustomPatterns(userAgent) {
|
|
256
|
+
if (this.config.customUserAgentPatterns.length === 0) {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
260
|
+
for (const pattern of this.config.customUserAgentPatterns) {
|
|
261
|
+
try {
|
|
262
|
+
const regex = new RegExp(pattern.source, flags);
|
|
263
|
+
if (regex.test(userAgent)) {
|
|
264
|
+
if (this.config.debug) {
|
|
265
|
+
this.logger.debug("security", `Custom pattern matched: ${pattern}`);
|
|
266
|
+
}
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
this.logger.warn("security", `Invalid custom pattern: ${pattern}`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Check if User-Agent indicates allowed mobile platform
|
|
278
|
+
*/
|
|
279
|
+
hasAllowedPlatform(userAgent) {
|
|
280
|
+
return this.config.allowedPlatforms.some((platform) => {
|
|
281
|
+
switch (platform) {
|
|
282
|
+
case "ios":
|
|
283
|
+
// iOS detection: iOS devices OR iOS HTTP clients (without desktop indicators)
|
|
284
|
+
return ((/\b(iPhone|iPad|iPod)\b/i.test(userAgent) ||
|
|
285
|
+
this.hasIosHttpClient(userAgent)) &&
|
|
286
|
+
!/\b(Macintosh|Mac OS X)\b/i.test(userAgent));
|
|
287
|
+
case "android":
|
|
288
|
+
// Android detection: Android OS OR Android HTTP clients (without desktop emulator)
|
|
289
|
+
return ((/\bAndroid\b/i.test(userAgent) ||
|
|
290
|
+
/\bDalvik\b/i.test(userAgent) ||
|
|
291
|
+
this.hasAndroidHttpClient(userAgent)) &&
|
|
292
|
+
!/\b(X11|Linux x86_64)\b/i.test(userAgent));
|
|
293
|
+
case "react-native":
|
|
294
|
+
return /\b(ReactNative|React Native)\b/i.test(userAgent);
|
|
295
|
+
case "expo":
|
|
296
|
+
return /\bExpo\b/i.test(userAgent);
|
|
297
|
+
case "flutter":
|
|
298
|
+
return /\b(Flutter|Dart)\b/i.test(userAgent);
|
|
299
|
+
default:
|
|
300
|
+
return false;
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Check for mobile-specific patterns
|
|
306
|
+
*/
|
|
307
|
+
hasMobilePatterns(userAgent) {
|
|
308
|
+
const flags = this.config.caseSensitive ? "g" : "gi";
|
|
309
|
+
return this.mobilePatterns.some((pattern) => {
|
|
310
|
+
const regex = new RegExp(pattern.source, flags);
|
|
311
|
+
return regex.test(userAgent);
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Check for mobile-specific headers
|
|
316
|
+
*/
|
|
317
|
+
hasMobileHeaders(req) {
|
|
318
|
+
if (!req.headers) {
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
return this.mobileHeaders.some((header) => {
|
|
322
|
+
const lowerHeader = header.toLowerCase();
|
|
323
|
+
// Check both original case and lowercase
|
|
324
|
+
return req.headers[header] || req.headers[lowerHeader];
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Validate User-Agent is not empty or suspicious
|
|
329
|
+
*/
|
|
330
|
+
isValidUserAgent(userAgent) {
|
|
331
|
+
if (!userAgent || userAgent.length === 0) {
|
|
332
|
+
if (this.config.debug) {
|
|
333
|
+
this.logger.debug("security", "Empty User-Agent detected");
|
|
334
|
+
}
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
// Allow shorter User-Agents for mobile HTTP clients (like okhttp/4.12.0)
|
|
338
|
+
if (userAgent.length < 5) {
|
|
339
|
+
if (this.config.debug) {
|
|
340
|
+
this.logger.debug("security", `Suspicious short User-Agent: ${userAgent}`);
|
|
341
|
+
}
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
// User-Agent with only generic "Mobile" is suspicious
|
|
345
|
+
if (userAgent === "Mobile" || userAgent.toLowerCase() === "mobile") {
|
|
346
|
+
if (this.config.debug) {
|
|
347
|
+
this.logger.debug("security", "Generic 'Mobile' User-Agent detected");
|
|
348
|
+
}
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Perform comprehensive mobile request validation
|
|
355
|
+
*/
|
|
356
|
+
validateMobileRequest(req, userAgent) {
|
|
357
|
+
let score = 0;
|
|
358
|
+
let reason = "";
|
|
359
|
+
const reasons = [];
|
|
360
|
+
// Phase 1: Validation checks (disqualifiers)
|
|
361
|
+
if (!this.isValidUserAgent(userAgent)) {
|
|
362
|
+
return { isValid: false, reason: "Invalid User-Agent", score: 0 };
|
|
363
|
+
}
|
|
364
|
+
if (this.hasSuspiciousPatterns(userAgent)) {
|
|
365
|
+
return {
|
|
366
|
+
isValid: false,
|
|
367
|
+
reason: "Suspicious patterns detected",
|
|
368
|
+
score: 0,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
if (this.hasDesktopIndicators(userAgent)) {
|
|
372
|
+
return {
|
|
373
|
+
isValid: false,
|
|
374
|
+
reason: "Desktop OS indicators detected",
|
|
375
|
+
score: 0,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
// Check browser indicators AFTER mobile patterns to avoid false positives
|
|
379
|
+
const hasBrowser = this.hasBrowserIndicators(userAgent);
|
|
380
|
+
const hasMobilePattern = this.hasMobilePatterns(userAgent);
|
|
381
|
+
const hasAndroidClient = this.hasAndroidHttpClient(userAgent);
|
|
382
|
+
const hasIosClient = this.hasIosHttpClient(userAgent);
|
|
383
|
+
const hasMobileFramework = this.hasMobileFramework(userAgent);
|
|
384
|
+
// If blockBrowserIndicators is disabled, browsers are allowed
|
|
385
|
+
if (!this.config.blockBrowserIndicators && hasBrowser) {
|
|
386
|
+
score += 50; // Give browsers a decent score when allowed
|
|
387
|
+
reasons.push("Browser allowed (blockBrowserIndicators disabled)");
|
|
388
|
+
}
|
|
389
|
+
// If it has browser indicators but NO mobile indicators, block it (only when blocking browsers)
|
|
390
|
+
else if (hasBrowser &&
|
|
391
|
+
!hasMobilePattern &&
|
|
392
|
+
!hasAndroidClient &&
|
|
393
|
+
!hasIosClient &&
|
|
394
|
+
!hasMobileFramework) {
|
|
395
|
+
return {
|
|
396
|
+
isValid: false,
|
|
397
|
+
reason: "Browser indicators without mobile patterns",
|
|
398
|
+
score: 0,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
// Phase 2: Positive indicators (qualifiers)
|
|
402
|
+
// Custom patterns have highest priority
|
|
403
|
+
if (this.matchesCustomPatterns(userAgent)) {
|
|
404
|
+
score = 100;
|
|
405
|
+
reason = "Custom pattern match";
|
|
406
|
+
return { isValid: true, reason, score };
|
|
407
|
+
}
|
|
408
|
+
// Mobile HTTP clients (high confidence for legitimate mobile apps)
|
|
409
|
+
if (hasAndroidClient) {
|
|
410
|
+
score += 80;
|
|
411
|
+
reasons.push("Android HTTP client");
|
|
412
|
+
}
|
|
413
|
+
if (hasIosClient) {
|
|
414
|
+
score += 80;
|
|
415
|
+
reasons.push("iOS HTTP client");
|
|
416
|
+
}
|
|
417
|
+
// Mobile frameworks (high confidence)
|
|
418
|
+
if (hasMobileFramework) {
|
|
419
|
+
score += 70;
|
|
420
|
+
reasons.push("Mobile framework");
|
|
421
|
+
}
|
|
422
|
+
// Platform-specific detection (medium-high confidence)
|
|
423
|
+
if (this.hasAllowedPlatform(userAgent)) {
|
|
424
|
+
score += 60;
|
|
425
|
+
reasons.push("Allowed platform");
|
|
426
|
+
}
|
|
427
|
+
// General mobile patterns (medium confidence)
|
|
428
|
+
if (hasMobilePattern) {
|
|
429
|
+
score += 40;
|
|
430
|
+
reasons.push("Mobile patterns");
|
|
431
|
+
}
|
|
432
|
+
// Mobile headers boost confidence
|
|
433
|
+
if (this.hasMobileHeaders(req)) {
|
|
434
|
+
score += 30;
|
|
435
|
+
reasons.push("Mobile headers");
|
|
436
|
+
}
|
|
437
|
+
// Require minimum score threshold
|
|
438
|
+
const threshold = this.config.requireMobileHeaders ? 80 : 50;
|
|
439
|
+
reason =
|
|
440
|
+
reasons.length > 0 ? reasons.join(" + ") : "No mobile indicators";
|
|
441
|
+
return {
|
|
442
|
+
isValid: score >= threshold,
|
|
443
|
+
reason: score >= threshold
|
|
444
|
+
? reason
|
|
445
|
+
: `Insufficient mobile indicators (score: ${score}/${threshold})`,
|
|
446
|
+
score,
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Check if request is from a mobile app
|
|
451
|
+
*/
|
|
452
|
+
isMobileRequest(req) {
|
|
453
|
+
const rawUserAgent = req.headers["user-agent"] || req.headers["User-Agent"] || "";
|
|
454
|
+
const userAgent = this.normalizeUserAgent(rawUserAgent);
|
|
455
|
+
const validation = this.validateMobileRequest(req, userAgent);
|
|
456
|
+
if (this.config.debug) {
|
|
457
|
+
this.logger.debug("security", `Validation result: ${validation.isValid ? "PASS" : "FAIL"} ` +
|
|
458
|
+
`(Score: ${validation.score}) - ${validation.reason} - UA: ${userAgent.substring(0, 100)}`);
|
|
459
|
+
}
|
|
460
|
+
return validation.isValid;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Middleware function
|
|
464
|
+
*/
|
|
465
|
+
middleware() {
|
|
466
|
+
return (req, res, next) => {
|
|
467
|
+
const userAgent = req.headers["user-agent"] ||
|
|
468
|
+
req.headers["User-Agent"] ||
|
|
469
|
+
"none";
|
|
470
|
+
if (this.config.debug) {
|
|
471
|
+
this.logger.debug("security", `MobileOnly check for ${req.ip} - UA: ${userAgent.substring(0, 100)}`);
|
|
472
|
+
}
|
|
473
|
+
if (this.isMobileRequest(req)) {
|
|
474
|
+
if (this.config.debug) {
|
|
475
|
+
this.logger.debug("security", `✅ ALLOWED mobile request from: ${req.ip}`);
|
|
476
|
+
}
|
|
477
|
+
return next();
|
|
478
|
+
}
|
|
479
|
+
this.logger.warn("security", `❌ BLOCKED non-mobile request from ${req.ip}. User-Agent: ${userAgent.substring(0, 150)}`);
|
|
480
|
+
// Check if headers already sent to prevent error
|
|
481
|
+
if (res.headersSent) {
|
|
482
|
+
this.logger.error("security", `Cannot send response for blocked request from ${req.ip} - headers already sent`);
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
return res.status(this.config.statusCode).json({
|
|
486
|
+
error: "Access Denied",
|
|
487
|
+
message: this.config.errorMessage,
|
|
488
|
+
code: "MOBILE_ONLY",
|
|
489
|
+
timestamp: new Date().toISOString(),
|
|
490
|
+
userAgent: userAgent,
|
|
491
|
+
ip: req.ip,
|
|
492
|
+
});
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Get current configuration
|
|
497
|
+
*/
|
|
498
|
+
getConfig() {
|
|
499
|
+
return { ...this.config };
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
exports.MobileOnlyProtector = MobileOnlyProtector;
|
|
504
|
+
//# sourceMappingURL=MobileOnlyProtector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileOnlyProtector.js","sources":["../../../../../../src/middleware/built-in/security/MobileOnlyProtector.ts"],"sourcesContent":[null],"names":["Logger"],"mappings":"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"}
|
|
@@ -44,6 +44,8 @@ class RequestSignatureProtector {
|
|
|
44
44
|
maxHeaderLength: 512,
|
|
45
45
|
maxFailedAttempts: 5,
|
|
46
46
|
blockDuration: 15 * 60 * 1000, // 15 minutes
|
|
47
|
+
disableRateLimiting: false,
|
|
48
|
+
rateLimitScaleFactor: 1.0,
|
|
47
49
|
minSecretLength: 32,
|
|
48
50
|
timingSafeComparison: true,
|
|
49
51
|
rejectSuspiciousPatterns: true,
|
|
@@ -77,8 +79,9 @@ class RequestSignatureProtector {
|
|
|
77
79
|
*/
|
|
78
80
|
handleRequest(req, res, next) {
|
|
79
81
|
const clientId = this.extractClientIdentifier(req);
|
|
80
|
-
// Check if client is currently blocked
|
|
81
|
-
if (this.
|
|
82
|
+
// Check if client is currently blocked (if rate limiting is enabled)
|
|
83
|
+
if (!this.config.disableRateLimiting &&
|
|
84
|
+
this.isClientBlocked(clientId)) {
|
|
82
85
|
return this.blockRequest(res, "RATE_LIMITED", "Too many failed authentication attempts. Temporarily blocked.", clientId);
|
|
83
86
|
}
|
|
84
87
|
if (this.config.debug) {
|
|
@@ -245,6 +248,10 @@ class RequestSignatureProtector {
|
|
|
245
248
|
* Record failed authentication attempt
|
|
246
249
|
*/
|
|
247
250
|
recordFailedAttempt(clientId) {
|
|
251
|
+
// Skip recording if rate limiting is disabled
|
|
252
|
+
if (this.config.disableRateLimiting) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
248
255
|
const now = Date.now();
|
|
249
256
|
const attempt = this.failedAttempts.get(clientId) || {
|
|
250
257
|
count: 0,
|
|
@@ -253,13 +260,20 @@ class RequestSignatureProtector {
|
|
|
253
260
|
};
|
|
254
261
|
attempt.count += 1;
|
|
255
262
|
attempt.lastAttempt = now;
|
|
263
|
+
// Calculate scaled thresholds
|
|
264
|
+
const scaledMaxFailedAttempts = Math.ceil((this.config.maxFailedAttempts || 5) *
|
|
265
|
+
(this.config.rateLimitScaleFactor || 1.0));
|
|
266
|
+
const scaledBlockDuration = Math.ceil((this.config.blockDuration || 900000) *
|
|
267
|
+
(this.config.rateLimitScaleFactor || 1.0));
|
|
256
268
|
// Block if threshold exceeded
|
|
257
|
-
if (attempt.count >=
|
|
258
|
-
attempt.blockedUntil = now +
|
|
269
|
+
if (attempt.count >= scaledMaxFailedAttempts) {
|
|
270
|
+
attempt.blockedUntil = now + scaledBlockDuration;
|
|
259
271
|
this.logSecurityEvent("warning", "Client blocked due to failed attempts", {
|
|
260
272
|
clientId,
|
|
261
273
|
attempts: attempt.count,
|
|
262
274
|
blockedUntil: new Date(attempt.blockedUntil).toISOString(),
|
|
275
|
+
scaledMaxFailedAttempts,
|
|
276
|
+
scaledBlockDuration,
|
|
263
277
|
});
|
|
264
278
|
}
|
|
265
279
|
this.failedAttempts.set(clientId, attempt);
|
|
@@ -405,6 +419,8 @@ class RequestSignatureProtector {
|
|
|
405
419
|
maxHeaderLength: this.config.maxHeaderLength,
|
|
406
420
|
maxFailedAttempts: this.config.maxFailedAttempts,
|
|
407
421
|
blockDuration: this.config.blockDuration,
|
|
422
|
+
disableRateLimiting: this.config.disableRateLimiting,
|
|
423
|
+
rateLimitScaleFactor: this.config.rateLimitScaleFactor,
|
|
408
424
|
minSecretLength: this.config.minSecretLength,
|
|
409
425
|
timingSafeComparison: this.config.timingSafeComparison,
|
|
410
426
|
rejectSuspiciousPatterns: this.config.rejectSuspiciousPatterns,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestSignatureProtector.js","sources":["../../../../../../src/middleware/built-in/security/RequestSignatureProtector.ts"],"sourcesContent":[null],"names":["Logger","crypto"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RequestSignatureProtector.js","sources":["../../../../../../src/middleware/built-in/security/RequestSignatureProtector.ts"],"sourcesContent":[null],"names":["Logger","crypto"],"mappings":"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"}
|