xypriss 2.3.0 → 2.3.2
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/mods/security/src/algorithms/hash-algorithms.js +2 -25
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +2 -25
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/index.js +15 -27
- package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/cjs/mods/security/src/components/fortified-function/index.js +1 -13
- 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 +2 -15
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/cjs/mods/security/src/core/crypt.js +56 -0
- package/dist/cjs/mods/security/src/core/crypt.js.map +1 -0
- package/dist/cjs/mods/security/src/core/crypto.js +1 -0
- package/dist/cjs/mods/security/src/core/crypto.js.map +1 -1
- package/dist/cjs/mods/security/src/core/hash/hash-core.js +34 -0
- package/dist/cjs/mods/security/src/core/hash/hash-core.js.map +1 -1
- package/dist/cjs/mods/security/src/core/password/password-utils.js +1 -1
- package/dist/cjs/mods/security/src/core/random/random-core.js +634 -0
- package/dist/cjs/mods/security/src/core/random/random-core.js.map +1 -1
- package/dist/cjs/mods/security/src/index.js +46 -55
- package/dist/cjs/mods/security/src/index.js.map +1 -1
- package/dist/cjs/mods/security/src/types/secure-mem.type.js +8 -2
- package/dist/cjs/mods/security/src/types/secure-mem.type.js.map +1 -1
- package/dist/cjs/src/cache/SecureCacheAdapter.js +20 -7
- package/dist/cjs/src/cache/SecureCacheAdapter.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +69 -9
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/modules/index.js +5 -15
- package/dist/cjs/src/plugins/modules/index.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +3 -3
- package/dist/cjs/src/server/const/default.js +4 -4
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +2 -25
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +2 -25
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/index.js +15 -27
- package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/esm/mods/security/src/components/fortified-function/index.js +1 -13
- 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 +2 -15
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/esm/mods/security/src/core/crypt.js +54 -0
- package/dist/esm/mods/security/src/core/crypt.js.map +1 -0
- package/dist/esm/mods/security/src/core/crypto.js +1 -0
- package/dist/esm/mods/security/src/core/crypto.js.map +1 -1
- package/dist/esm/mods/security/src/core/hash/hash-core.js +34 -0
- package/dist/esm/mods/security/src/core/hash/hash-core.js.map +1 -1
- package/dist/esm/mods/security/src/core/password/password-utils.js +1 -1
- package/dist/esm/mods/security/src/core/random/random-core.js +634 -0
- package/dist/esm/mods/security/src/core/random/random-core.js.map +1 -1
- package/dist/esm/mods/security/src/index.js +19 -30
- package/dist/esm/mods/security/src/index.js.map +1 -1
- package/dist/esm/mods/security/src/types/secure-mem.type.js +8 -2
- package/dist/esm/mods/security/src/types/secure-mem.type.js.map +1 -1
- package/dist/esm/src/cache/SecureCacheAdapter.js +20 -7
- package/dist/esm/src/cache/SecureCacheAdapter.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +69 -9
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/modules/index.js +5 -15
- package/dist/esm/src/plugins/modules/index.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +3 -3
- package/dist/esm/src/server/const/default.js +4 -4
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/index.d.ts +84 -2
- package/package.json +2 -2
|
@@ -36,23 +36,11 @@ import 'child_process';
|
|
|
36
36
|
import 'https';
|
|
37
37
|
import '../../../mods/security/src/components/runtime-verification.js';
|
|
38
38
|
import '../../../mods/security/src/components/tamper-evident-logging.js';
|
|
39
|
+
import '../../../mods/security/src/core/crypto.js';
|
|
39
40
|
import '../../../mods/security/src/core/keys/keys-types.js';
|
|
40
41
|
import '../../../mods/security/src/core/keys/keys-logger.js';
|
|
41
42
|
import '../../../mods/security/src/core/keys/keys-utils.js';
|
|
42
43
|
import '../../../mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js';
|
|
43
|
-
import 'xypriss-security';
|
|
44
|
-
import 'helmet';
|
|
45
|
-
import 'cors';
|
|
46
|
-
import 'express-rate-limit';
|
|
47
|
-
import 'compression';
|
|
48
|
-
import 'hpp';
|
|
49
|
-
import 'express-mongo-sanitize';
|
|
50
|
-
import 'xss';
|
|
51
|
-
import 'morgan';
|
|
52
|
-
import 'express-slow-down';
|
|
53
|
-
import 'express-brute';
|
|
54
|
-
import 'multer';
|
|
55
|
-
import 'csrf-csrf';
|
|
56
44
|
import '../../../mods/security/src/core/password/index.js';
|
|
57
45
|
import 'systeminformation';
|
|
58
46
|
import 'pidusage';
|
|
@@ -62,10 +50,12 @@ import 'perf_hooks';
|
|
|
62
50
|
export { NetworkCategory } from './network/types/NetworkTypes.js';
|
|
63
51
|
import 'fs';
|
|
64
52
|
import 'path';
|
|
53
|
+
import 'xypriss-security';
|
|
65
54
|
import 'zlib';
|
|
55
|
+
import 'compression';
|
|
66
56
|
import 'http-proxy-middleware';
|
|
67
|
-
import '
|
|
68
|
-
import '../../
|
|
57
|
+
import 'express-rate-limit';
|
|
58
|
+
import '../../cache/SecureCacheAdapter.js';
|
|
69
59
|
|
|
70
60
|
/**
|
|
71
61
|
* XyPrissJS Ultra-Fast Plugin System
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/plugins/modules/index.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/plugins/modules/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -31,11 +31,11 @@ import 'child_process';
|
|
|
31
31
|
import 'https';
|
|
32
32
|
import '../../mods/security/src/components/runtime-verification.js';
|
|
33
33
|
import '../../mods/security/src/components/tamper-evident-logging.js';
|
|
34
|
+
import '../../mods/security/src/core/crypto.js';
|
|
34
35
|
import '../../mods/security/src/core/keys/keys-types.js';
|
|
35
36
|
import '../../mods/security/src/core/keys/keys-logger.js';
|
|
36
37
|
import '../../mods/security/src/core/keys/keys-utils.js';
|
|
37
38
|
import '../../mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js';
|
|
38
|
-
import { SecurityMiddleware } from '../middleware/security-middleware.js';
|
|
39
39
|
import '../../mods/security/src/core/password/index.js';
|
|
40
40
|
import 'systeminformation';
|
|
41
41
|
import 'pidusage';
|
|
@@ -49,8 +49,7 @@ import 'compression';
|
|
|
49
49
|
import { ProxyPlugin } from '../plugins/modules/network/builtin/ProxyPlugin.js';
|
|
50
50
|
import 'express-rate-limit';
|
|
51
51
|
import 'xypriss-security';
|
|
52
|
-
import '
|
|
53
|
-
import '../encryption/EncryptionService.js';
|
|
52
|
+
import '../cache/SecureCacheAdapter.js';
|
|
54
53
|
import { PluginManager as PluginManager$1 } from '../plugins/plugin-manager.js';
|
|
55
54
|
import { PluginManager } from './components/fastapi/PluginManager.js';
|
|
56
55
|
import { DEFAULT_HOST, DEFAULT_OPTIONS } from './const/default.js';
|
|
@@ -66,6 +65,7 @@ import { PerformanceManager } from './components/fastapi/PerformanceManager.js';
|
|
|
66
65
|
import { WorkerPoolComponent } from './components/fastapi/WorkerPoolComponent.js';
|
|
67
66
|
import { netConfig } from './conf/networkConnectionConf.js';
|
|
68
67
|
import { proxyConfig } from './conf/proxyConfig.js';
|
|
68
|
+
import { SecurityMiddleware } from '../middleware/security-middleware.js';
|
|
69
69
|
import { ServerLifecycleManager } from './components/lifecycle/ServerLifecycleManager.js';
|
|
70
70
|
|
|
71
71
|
/**
|
|
@@ -130,20 +130,20 @@ const DEFAULT_OPTIONS = {
|
|
|
130
130
|
level: "maximum",
|
|
131
131
|
csrf: true,
|
|
132
132
|
helmet: true,
|
|
133
|
-
xss: true,
|
|
134
133
|
sqlInjection: true,
|
|
135
134
|
bruteForce: false,
|
|
136
|
-
pathTraversal: true,
|
|
137
135
|
commandInjection: true,
|
|
136
|
+
pathTraversal: false,
|
|
137
|
+
xss: true,
|
|
138
|
+
compression: true,
|
|
139
|
+
ldapInjection: false,
|
|
138
140
|
xxe: true,
|
|
139
|
-
ldapInjection: true,
|
|
140
141
|
rateLimit: {
|
|
141
142
|
max: 100,
|
|
142
143
|
windowMs: 60 * 60 * 1000,
|
|
143
144
|
message: "Too many requests from this IP, please try again later (this is a default message, you can customize it in the config).",
|
|
144
145
|
},
|
|
145
146
|
morgan: false,
|
|
146
|
-
compression: true,
|
|
147
147
|
hpp: true,
|
|
148
148
|
mongoSanitize: true,
|
|
149
149
|
slowDown: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAOU,MAAA,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,YAAY;AACrD,MAAM,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAY;AAEjE;AACa,MAAA,eAAe,GAAkB;AAC1C,IAAA,WAAW,EAAE;AACT,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,IAAI;;AAEd,QAAA,mBAAmB,EAAE,IAAI;AACzB,QAAA,qBAAqB,EAAE,IAAI;AAC3B,QAAA,oBAAoB,EAAE,IAAI;AAC1B,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,kBAAkB,EAAE,IAAI;;AAExB,QAAA,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,KAAK;QACrB,qBAAqB,EAAE,CAAC;QACxB,sBAAsB,EAAE,IAAI;AAC5B,QAAA,iBAAiB,EAAE,IAAI;;AAEvB,QAAA,qBAAqB,EAAE,IAAI;AAC3B,QAAA,uBAAuB,EAAE,IAAI;AAC7B,QAAA,yBAAyB,EAAE,IAAI;;AAE/B,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,yBAAyB,EAAE,IAAI;AAClC,KAAA;AACD,IAAA,UAAU,EAAE;AACR,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,eAAe,EAAE;AACb,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,EAAE;AACd,SAAA;AACJ,KAAA;AACD,IAAA,MAAM,EAAE;AACJ,QAAA,gBAAgB,EAAE,IAAI;QACtB,IAAI,EAAE,YAAY;AAClB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,cAAc,EAAE;AACZ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,QAAQ;AACrB,SAAA;AACJ,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,GAAG,iBAAiB;QACpB,OAAO,EAAE,KAAK;AACjB,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,UAAU,EAAE;AACR,YAAA,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;AACjB,SAAA;AACD,QAAA,KAAK,EAAE;AACH,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA;AACD,QAAA,MAAM,EAAE;AACJ,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,UAAU,EAAE,KAAK;AACpB,SAAA;;AAED,QAAA,mBAAmB,EAAE;AACjB,YAAA,GAAG,sBAAsB;YACzB,OAAO,EAAE,KAAK;AACd,YAAA,gBAAgB,EAAE,IAAI;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,eAAe,EAAE,KAAK;AACzB,KAAA;AACD,IAAA,OAAO,EAAE;QACL,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAE,uBAAuB;AAClC,KAAA;AACD,IAAA,KAAK,EAAE;QACH,QAAQ,EAAE,QAAQ;AAClB,QAAA,OAAO,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;QAC1B,GAAG,EAAE,MAAM;AACX,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,KAAK;AACnB,SAAA;AACJ,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,
|
|
1
|
+
{"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -243,6 +243,8 @@ interface EnhancedCacheStats {
|
|
|
243
243
|
* UF secure cache adapter
|
|
244
244
|
*/
|
|
245
245
|
declare class SecureCacheAdapter extends EventEmitter {
|
|
246
|
+
private static sharedMemoryCache;
|
|
247
|
+
private static sharedMasterEncryptionKey;
|
|
246
248
|
private config;
|
|
247
249
|
private memoryCache;
|
|
248
250
|
private redisClient?;
|
|
@@ -260,10 +262,12 @@ declare class SecureCacheAdapter extends EventEmitter {
|
|
|
260
262
|
private initializeStats;
|
|
261
263
|
/**
|
|
262
264
|
* Initialize master encryption key for consistent encryption
|
|
265
|
+
* Uses singleton pattern to ensure all instances use the same key
|
|
263
266
|
*/
|
|
264
267
|
private initializeMasterKey;
|
|
265
268
|
/**
|
|
266
269
|
* Initialize memory cache with security features
|
|
270
|
+
* Uses singleton pattern to ensure all instances share the same memory cache
|
|
267
271
|
*/
|
|
268
272
|
private initializeMemoryCache;
|
|
269
273
|
/**
|
|
@@ -2049,6 +2053,25 @@ interface SlowDownConfig {
|
|
|
2049
2053
|
/** Custom delay function */
|
|
2050
2054
|
delayMs?: (used: number, req: any) => number;
|
|
2051
2055
|
}
|
|
2056
|
+
/**
|
|
2057
|
+
* Route pattern matching configuration for security rules
|
|
2058
|
+
*/
|
|
2059
|
+
interface RoutePattern$1 {
|
|
2060
|
+
/** Route path pattern (supports wildcards like /api/*, exact paths like /login, or regex) */
|
|
2061
|
+
path: string | RegExp;
|
|
2062
|
+
/** HTTP methods to apply this rule to (if not specified, applies to all methods) */
|
|
2063
|
+
methods?: string[];
|
|
2064
|
+
}
|
|
2065
|
+
/**
|
|
2066
|
+
* Security module route configuration
|
|
2067
|
+
* Allows selective application of security modules to specific routes
|
|
2068
|
+
*/
|
|
2069
|
+
interface SecurityModuleRouteConfig {
|
|
2070
|
+
/** Routes to exclude from this security module */
|
|
2071
|
+
excludeRoutes?: (string | RegExp | RoutePattern$1)[];
|
|
2072
|
+
/** Routes to include for this security module (if specified, only these routes will be protected) */
|
|
2073
|
+
includeRoutes?: (string | RegExp | RoutePattern$1)[];
|
|
2074
|
+
}
|
|
2052
2075
|
/**
|
|
2053
2076
|
* Security Configuration Interface
|
|
2054
2077
|
*
|
|
@@ -2071,6 +2094,11 @@ interface SlowDownConfig {
|
|
|
2071
2094
|
* bruteForce: {
|
|
2072
2095
|
* windowMs: 15 * 60 * 1000,
|
|
2073
2096
|
* max: 100
|
|
2097
|
+
* },
|
|
2098
|
+
* routeConfig: {
|
|
2099
|
+
* pathTraversal: {
|
|
2100
|
+
* excludeRoutes: ['/api/templates/*', '/api/content/*']
|
|
2101
|
+
* }
|
|
2074
2102
|
* }
|
|
2075
2103
|
* };
|
|
2076
2104
|
* ```
|
|
@@ -2078,6 +2106,33 @@ interface SlowDownConfig {
|
|
|
2078
2106
|
interface SecurityConfig {
|
|
2079
2107
|
/** Security level preset */
|
|
2080
2108
|
level?: SecurityLevel;
|
|
2109
|
+
/**
|
|
2110
|
+
* Route-based security configuration
|
|
2111
|
+
* Allows you to selectively apply security modules to specific routes
|
|
2112
|
+
*
|
|
2113
|
+
* @example
|
|
2114
|
+
* ```typescript
|
|
2115
|
+
* routeConfig: {
|
|
2116
|
+
* xss: {
|
|
2117
|
+
* excludeRoutes: ['/api/safe-content/*']
|
|
2118
|
+
* },
|
|
2119
|
+
* pathTraversal: {
|
|
2120
|
+
* excludeRoutes: ['/api/templates/*', { path: '/api/content/*', methods: ['POST'] }]
|
|
2121
|
+
* },
|
|
2122
|
+
* sqlInjection: {
|
|
2123
|
+
* includeRoutes: ['/api/db/*', '/api/query/*']
|
|
2124
|
+
* }
|
|
2125
|
+
* }
|
|
2126
|
+
* ```
|
|
2127
|
+
*/
|
|
2128
|
+
routeConfig?: {
|
|
2129
|
+
xss?: SecurityModuleRouteConfig;
|
|
2130
|
+
sqlInjection?: SecurityModuleRouteConfig;
|
|
2131
|
+
pathTraversal?: SecurityModuleRouteConfig;
|
|
2132
|
+
commandInjection?: SecurityModuleRouteConfig;
|
|
2133
|
+
xxe?: SecurityModuleRouteConfig;
|
|
2134
|
+
ldapInjection?: SecurityModuleRouteConfig;
|
|
2135
|
+
};
|
|
2081
2136
|
/**
|
|
2082
2137
|
* CSRF Protection Configuration
|
|
2083
2138
|
*
|
|
@@ -4261,7 +4316,7 @@ declare class ConsoleInterceptor {
|
|
|
4261
4316
|
* Security middleware class implementing comprehensive protection
|
|
4262
4317
|
* Implements SecurityConfig interface to ensure type safety
|
|
4263
4318
|
*/
|
|
4264
|
-
declare class SecurityMiddleware
|
|
4319
|
+
declare class SecurityMiddleware {
|
|
4265
4320
|
level: SecurityLevel;
|
|
4266
4321
|
csrf: boolean | CSRFConfig;
|
|
4267
4322
|
helmet: boolean | HelmetConfig;
|
|
@@ -4281,6 +4336,7 @@ declare class SecurityMiddleware implements Required<SecurityConfig> {
|
|
|
4281
4336
|
slowDown: boolean | SlowDownConfig;
|
|
4282
4337
|
encryption: Required<SecurityConfig>["encryption"];
|
|
4283
4338
|
authentication: Required<SecurityConfig>["authentication"];
|
|
4339
|
+
routeConfig?: SecurityConfig["routeConfig"];
|
|
4284
4340
|
private helmetMiddleware;
|
|
4285
4341
|
private corsMiddleware;
|
|
4286
4342
|
private rateLimitMiddleware;
|
|
@@ -4335,7 +4391,15 @@ declare class SecurityMiddleware implements Required<SecurityConfig> {
|
|
|
4335
4391
|
/**
|
|
4336
4392
|
* Get security configuration
|
|
4337
4393
|
*/
|
|
4338
|
-
getConfig():
|
|
4394
|
+
getConfig(): SecurityConfig;
|
|
4395
|
+
/**
|
|
4396
|
+
* Check if a route matches a pattern
|
|
4397
|
+
*/
|
|
4398
|
+
private matchesRoute;
|
|
4399
|
+
/**
|
|
4400
|
+
* Check if a security module should be applied to a route
|
|
4401
|
+
*/
|
|
4402
|
+
private shouldApplySecurityModule;
|
|
4339
4403
|
}
|
|
4340
4404
|
|
|
4341
4405
|
/**
|
|
@@ -9342,6 +9406,24 @@ declare class Hash {
|
|
|
9342
9406
|
* IMPORTANT: Only wipe copies, not the original salt/pepper that might be needed for verification
|
|
9343
9407
|
*/
|
|
9344
9408
|
private static handleSecureWipe;
|
|
9409
|
+
/**
|
|
9410
|
+
* Generate PKCE code challenge from code verifier (RFC 7636 compliant)
|
|
9411
|
+
*
|
|
9412
|
+
* This method implements the Proof Key for Code Exchange (PKCE) specification
|
|
9413
|
+
* as defined in RFC 7636. It generates a SHA256-based code challenge that
|
|
9414
|
+
* matches the format used by mobile applications (expo-crypto).
|
|
9415
|
+
*
|
|
9416
|
+
* @param input - The code verifier string
|
|
9417
|
+
* @param method - The challenge method ('S256' or 'plain'), defaults to 'S256'
|
|
9418
|
+
* @returns PKCE-compliant code challenge string
|
|
9419
|
+
*
|
|
9420
|
+
* @example
|
|
9421
|
+
* ```typescript
|
|
9422
|
+
* const codeVerifier = 'uCoEh3q6tUR0_eVlsr6b6qjfzeWf_jnfoif8XQvTPeMq~zG6MyiEyhAroiJrmcrCb8JNqd6tSqvYX~1nLcD29.QU~iIxeGZleMeiiC1vfd.hLns0MuQZuTL.NqByFF0K';
|
|
9423
|
+
* const challenge = Hash.pkce(codeVerifier); // Returns RFC 7636 compliant challenge
|
|
9424
|
+
* ```
|
|
9425
|
+
*/
|
|
9426
|
+
static pkce(input: string, method?: 'S256' | 'plain'): string;
|
|
9345
9427
|
/**
|
|
9346
9428
|
* Legacy secure hash method (for backward compatibility)
|
|
9347
9429
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xypriss",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"description": "XyPriss is a lightweight, TypeScript-first, open-source Node.js web framework crafted for developers seeking a familiar Express-like API without Express dependencies. It features built-in security middleware, a robust routing system, and performance optimizations to build scalable, secure web applications effortlessly. Join our community and contribute on GitHub!",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
"@types/ws": "^8.18.1",
|
|
172
172
|
"@typescript-eslint/eslint-plugin": "^5.57.0",
|
|
173
173
|
"@typescript-eslint/parser": "^5.57.0",
|
|
174
|
-
"axios": "^1.
|
|
174
|
+
"axios": "^1.13.1",
|
|
175
175
|
"eslint": "^8.37.0",
|
|
176
176
|
"jest": "^29.5.0",
|
|
177
177
|
"nehonix-uri-processor": "^2.3.19",
|