xypriss 9.6.97 → 9.7.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/README.md +55 -22
- package/dist/cjs/src/index.js +0 -19
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +4 -4
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/security/HoneypotTarpit.js +510 -0
- package/dist/cjs/src/middleware/built-in/security/HoneypotTarpit.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js +113 -34
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/security/UriNormalizer.js +413 -0
- package/dist/cjs/src/middleware/built-in/security/UriNormalizer.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissCors.js +98 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissCors.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissHPP.js +52 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissHPP.js.map +1 -0
- package/dist/cjs/src/middleware/safe-json-middleware.js +0 -82
- package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +7 -4
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/builtin/xems/XemsBuiltinPlugin.js +33 -10
- package/dist/cjs/src/plugins/builtin/xems/XemsBuiltinPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/builtin/xems/XemsPlugin.js +34 -3
- package/dist/cjs/src/plugins/builtin/xems/XemsPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/const/OFFICIAL_PLUGINS.js +1 -1
- package/dist/cjs/src/plugins/const/OFFICIAL_PLUGINS.js.map +1 -1
- package/dist/cjs/src/plugins/const/XyprissTempDir.js +72 -9
- package/dist/cjs/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/cjs/src/plugins/core/manager/PluginLoader.js +8 -0
- package/dist/cjs/src/plugins/core/manager/PluginLoader.js.map +1 -1
- package/dist/cjs/src/plugins/core/manager/PluginSecurity.js +106 -3
- package/dist/cjs/src/plugins/core/manager/PluginSecurity.js.map +1 -1
- package/dist/cjs/src/server/FastServer/index.js +5 -0
- package/dist/cjs/src/server/FastServer/index.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +8 -13
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js +8 -58
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/upload/FileUploadManager.js +1 -1
- package/dist/cjs/src/server/components/fastapi/upload/FileUploadManager.js.map +1 -1
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js +9 -1
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +22 -0
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/EngineManager.js +33 -2
- package/dist/cjs/src/server/core/XHSCBridge/EngineManager.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/cjs/src/server/core/XyServerCreator.js +1 -0
- package/dist/cjs/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/cjs/src/shared/logger/quickLogger.js +162 -0
- package/dist/cjs/src/shared/logger/quickLogger.js.map +1 -0
- package/dist/cjs/src/xhsc/PathApi.js +44 -3
- package/dist/cjs/src/xhsc/PathApi.js.map +1 -1
- package/dist/cjs/src/xhsc/System.js +2 -0
- package/dist/cjs/src/xhsc/System.js.map +1 -1
- package/dist/cjs/src/xhsc/UtilsApi.js +52 -0
- package/dist/cjs/src/xhsc/UtilsApi.js.map +1 -0
- package/dist/cjs/src/xhsc/XyPrissRunner.js +30 -2
- package/dist/cjs/src/xhsc/XyPrissRunner.js.map +1 -1
- package/dist/cjs/src/xhsc/fs/FSCore.js +148 -0
- package/dist/cjs/src/xhsc/fs/FSCore.js.map +1 -1
- package/dist/cjs/src/xhsc/fs/FileHandle.js +112 -0
- package/dist/cjs/src/xhsc/fs/FileHandle.js.map +1 -0
- package/dist/cjs/src/xhsc/ipc/XHSCDirectIPC.js +134 -0
- package/dist/cjs/src/xhsc/ipc/XHSCDirectIPC.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ArrayUtils.js +67 -0
- package/dist/cjs/src/xhsc/utils/ArrayUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/AsyncUtils.js +582 -0
- package/dist/cjs/src/xhsc/utils/AsyncUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/DateUtils.js +959 -0
- package/dist/cjs/src/xhsc/utils/DateUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/FunctionUtils.js +29 -0
- package/dist/cjs/src/xhsc/utils/FunctionUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/IdUtils.js +22 -0
- package/dist/cjs/src/xhsc/utils/IdUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/NumberUtils.js +79 -0
- package/dist/cjs/src/xhsc/utils/NumberUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ObjectUtils.js +141 -0
- package/dist/cjs/src/xhsc/utils/ObjectUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/StringUtils.js +145 -0
- package/dist/cjs/src/xhsc/utils/StringUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ValidationUtils.js +49 -0
- package/dist/cjs/src/xhsc/utils/ValidationUtils.js.map +1 -0
- package/dist/cjs/src/xhsc.js +5 -3
- package/dist/cjs/src/xhsc.js.map +1 -1
- package/dist/esm/src/index.js +0 -2
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +4 -4
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/HoneypotTarpit.js +508 -0
- package/dist/esm/src/middleware/built-in/security/HoneypotTarpit.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js +113 -34
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/UriNormalizer.js +391 -0
- package/dist/esm/src/middleware/built-in/security/UriNormalizer.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissCors.js +96 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissCors.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissHPP.js +50 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissHPP.js.map +1 -0
- package/dist/esm/src/middleware/safe-json-middleware.js +1 -79
- package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +7 -4
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/builtin/xems/XemsBuiltinPlugin.js +33 -10
- package/dist/esm/src/plugins/builtin/xems/XemsBuiltinPlugin.js.map +1 -1
- package/dist/esm/src/plugins/builtin/xems/XemsPlugin.js +34 -3
- package/dist/esm/src/plugins/builtin/xems/XemsPlugin.js.map +1 -1
- package/dist/esm/src/plugins/const/OFFICIAL_PLUGINS.js +1 -1
- package/dist/esm/src/plugins/const/OFFICIAL_PLUGINS.js.map +1 -1
- package/dist/esm/src/plugins/const/XyprissTempDir.js +70 -9
- package/dist/esm/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/esm/src/plugins/core/manager/PluginLoader.js +8 -0
- package/dist/esm/src/plugins/core/manager/PluginLoader.js.map +1 -1
- package/dist/esm/src/plugins/core/manager/PluginSecurity.js +106 -3
- package/dist/esm/src/plugins/core/manager/PluginSecurity.js.map +1 -1
- package/dist/esm/src/server/FastServer/index.js +5 -0
- package/dist/esm/src/server/FastServer/index.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +8 -1
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/RedirectManager.js +8 -58
- package/dist/esm/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/upload/FileUploadManager.js +1 -1
- package/dist/esm/src/server/components/fastapi/upload/FileUploadManager.js.map +1 -1
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js +9 -1
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +22 -0
- package/dist/esm/src/server/core/HttpServer.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/EngineManager.js +33 -2
- package/dist/esm/src/server/core/XHSCBridge/EngineManager.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/esm/src/server/core/XyServerCreator.js +1 -0
- package/dist/esm/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/esm/src/shared/logger/quickLogger.js +160 -0
- package/dist/esm/src/shared/logger/quickLogger.js.map +1 -0
- package/dist/esm/src/xhsc/PathApi.js +44 -3
- package/dist/esm/src/xhsc/PathApi.js.map +1 -1
- package/dist/esm/src/xhsc/System.js +2 -0
- package/dist/esm/src/xhsc/System.js.map +1 -1
- package/dist/esm/src/xhsc/UtilsApi.js +50 -0
- package/dist/esm/src/xhsc/UtilsApi.js.map +1 -0
- package/dist/esm/src/xhsc/XyPrissRunner.js +30 -2
- package/dist/esm/src/xhsc/XyPrissRunner.js.map +1 -1
- package/dist/esm/src/xhsc/fs/FSCore.js +148 -0
- package/dist/esm/src/xhsc/fs/FSCore.js.map +1 -1
- package/dist/esm/src/xhsc/fs/FileHandle.js +110 -0
- package/dist/esm/src/xhsc/fs/FileHandle.js.map +1 -0
- package/dist/esm/src/xhsc/ipc/XHSCDirectIPC.js +113 -0
- package/dist/esm/src/xhsc/ipc/XHSCDirectIPC.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ArrayUtils.js +65 -0
- package/dist/esm/src/xhsc/utils/ArrayUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/AsyncUtils.js +580 -0
- package/dist/esm/src/xhsc/utils/AsyncUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/DateUtils.js +957 -0
- package/dist/esm/src/xhsc/utils/DateUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/FunctionUtils.js +27 -0
- package/dist/esm/src/xhsc/utils/FunctionUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/IdUtils.js +20 -0
- package/dist/esm/src/xhsc/utils/IdUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/NumberUtils.js +77 -0
- package/dist/esm/src/xhsc/utils/NumberUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ObjectUtils.js +139 -0
- package/dist/esm/src/xhsc/utils/ObjectUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/StringUtils.js +143 -0
- package/dist/esm/src/xhsc/utils/StringUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ValidationUtils.js +47 -0
- package/dist/esm/src/xhsc/utils/ValidationUtils.js.map +1 -0
- package/dist/esm/src/xhsc.js +6 -5
- package/dist/esm/src/xhsc.js.map +1 -1
- package/dist/index.d.ts +1872 -234
- package/package.json +119 -137
package/README.md
CHANGED
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
**Enterprise-Grade Node.js Web Framework**
|
|
5
5
|
|
|
6
|
-
[](https://xypriss.nehonix.com)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
[](https://dll.nehonix.com/licenses/NOSL)
|
|
9
9
|
[](https://nehonix.com)
|
|
10
|
-
[](https://www.jsdelivr.com/package/npm/xypriss)
|
|
11
10
|
|
|
12
11
|
[Quick Start](https://xypriss.nehonix.com/docs/QUICK_START) • [Documentation](https://xypriss.nehonix.com/docs/) • [Examples](https://xypriss.nehonix.com/docs/EXAMPLES) • [API Reference](https://xypriss.nehonix.com/docs/api-reference)
|
|
13
12
|
|
|
@@ -23,11 +22,11 @@
|
|
|
23
22
|
XyPriss is an **Enterprise-Grade Hybrid Web Framework** that combines the raw performance of compiled native binaries with the productivity and flexibility of **TypeScript**. It is designed for teams that require both operational speed and developer velocity, without compromise.
|
|
24
23
|
|
|
25
24
|
> [!NOTE]
|
|
26
|
-
>
|
|
25
|
+
> **Security Briefing:** XyPriss enforces a "Secure by Default" architecture. Core variables are protected by a native **[Environment Security Shield](./docs/ENVIRONMENT_SHIELD.md)** that blocks direct `process.env` access to prevent leakage. This is complemented by a built-in, zero-dependency storage system (**XEMS**), high-speed Go-powered networking (**XHSC**), and a **Zero-Trust Plugin Security** layer.
|
|
27
26
|
|
|
28
27
|
### Cross-Platform Foundation
|
|
29
28
|
|
|
30
|
-
XyPriss
|
|
29
|
+
XyPriss provides pre-compiled native binaries for all major platforms. No additional toolchains, compilers, or runtime dependencies are required.
|
|
31
30
|
|
|
32
31
|
| OS | Architecture | Status |
|
|
33
32
|
| ----------- | ----------------------- | --------- |
|
|
@@ -46,7 +45,7 @@ The framework operates on a layered architecture:
|
|
|
46
45
|
|
|
47
46
|
1. **XHSC (Native Engine):** Handles the HTTP/S stack, advanced radix routing, filesystem I/O, process monitoring, and real-time hardware telemetry. It acts as the high-speed gateway for all incoming traffic and system operations.
|
|
48
47
|
2. **Node.js Runtime:** Provides the enterprise-ready application layer where developers define business logic, security middleware, and data processing pipelines using TypeScript.
|
|
49
|
-
3. **XFPM (XyPriss Fast Package Manager):** A high-performance,
|
|
48
|
+
3. **XFPM (XyPriss Fast Package Manager):** A high-performance, Go-powered package manager optimized for the XyPriss ecosystem. Provides ultra-fast dependency resolution, extraction, and caching. [Learn more about XFPM](https://github.com/Nehonix-Team/XFMP).
|
|
50
49
|
|
|
51
50
|
This separation allows each layer to operate in its optimal domain: compiled native code for performance-critical paths, TypeScript for rapid application development.
|
|
52
51
|
|
|
@@ -60,7 +59,7 @@ This separation allows each layer to operate in its optimal domain: compiled nat
|
|
|
60
59
|
- **Filesystem Engine & Binary Streaming** — High-performance filesystem operations, duplicate detection, and robust **Zero-Copy Ranged Streaming** via `res.sendFile()`, optimized for media delivery and large assets.
|
|
61
60
|
- **File Upload Management** — Production-ready multipart/form-data handling with automatic validation, error handling, and the `getMimes()` helper for extension-to-mime mapping.
|
|
62
61
|
- **Environment Security Shield** — Military-grade protection for sensitive variables. Direct `process.env` access is masked via a native Proxy to prevent accidental leakage, forcing the use of secure, typed APIs.
|
|
63
|
-
- **Built-in DotEnv Loader** — Zero-dependency, ultra-fast `.env` parser with automatic support for `.env`, `.env.local
|
|
62
|
+
- **Built-in DotEnv Loader** — Zero-dependency, ultra-fast `.env` parser with automatic support for `.env`, `.env.local`.
|
|
64
63
|
- **Extensible Plugin System** — Permission-based plugin architecture with lifecycle hooks and strict security controls (sandboxed restricted instances).
|
|
65
64
|
- **Application Immutability** — Global protection against runtime hijacking. The `App` instance is locked via Proxy after creation to prevent unauthorized property mutations or deletions.
|
|
66
65
|
- **Native Production Integration** — Built for automated deployments and SSL management via [XyNginC](https://github.com/Nehonix-Team/xynginc).
|
|
@@ -82,16 +81,11 @@ Once installed, you can manage your project dependencies with ultra-high perform
|
|
|
82
81
|
|
|
83
82
|
```bash
|
|
84
83
|
# Install XyPriss in your project
|
|
85
|
-
|
|
84
|
+
xfpm install xypriss
|
|
86
85
|
```
|
|
87
86
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
xfpm i xypriss
|
|
92
|
-
# or
|
|
93
|
-
yarn add xypriss
|
|
94
|
-
```
|
|
87
|
+
> [!IMPORTANT]
|
|
88
|
+
> **XFPM Exclusivity**: All XyPriss projects MUST use `xfpm` for dependency management. Other package managers are not supported and will break the security chain.
|
|
95
89
|
|
|
96
90
|
For additional security features:
|
|
97
91
|
|
|
@@ -153,16 +147,17 @@ app.start();
|
|
|
153
147
|
### Security
|
|
154
148
|
|
|
155
149
|
- [Security Overview](./docs/security/SECURITY.md) - Security features and best practices
|
|
156
|
-
- [**XEMS —
|
|
150
|
+
- [**XEMS — Modular Technical Suite**](./docs/security/xems/README.md) - Deep dive into sidecar architecture, encryption, and configuration
|
|
151
|
+
- [**XEMS — Basic Tutorial**](./docs/XEMS_TUTORIAL.md) - High-level introduction to sessions and OTP flows
|
|
157
152
|
- [Route-Based Security](./docs/security/ROUTE_BASED_SECURITY.md) - Per-route security policies
|
|
158
153
|
- [Request Signature Auth](./docs/security/request-signature-auth.md) - API key authentication
|
|
159
154
|
- [CORS Configuration](./docs/security/advanced-cors-regexp.md) - Advanced CORS with RegExp patterns
|
|
160
155
|
|
|
161
156
|
### Plugin System
|
|
162
157
|
|
|
163
|
-
- [Plugin Development Guide](./docs/plugins/PLUGIN_SYSTEM_GUIDE.md) -
|
|
158
|
+
- [Plugin Development Guide](./docs/plugins/PLUGIN_SYSTEM_GUIDE.md) - Recommended: Comprehensive guide to the modular architecture.
|
|
164
159
|
- [Plugin API Reference](./docs/plugins/plugins.md) - Detailed interface and hook reference.
|
|
165
|
-
- [Plugin Permissions](./docs/plugins/PLUGIN_PERMISSIONS.md) - Security and permissions (
|
|
160
|
+
- [Plugin Permissions](./docs/plugins/PLUGIN_PERMISSIONS.md) - Security and permissions (Capability-Based).
|
|
166
161
|
- [Built-in Plugins](./docs/plugins/BUILTIN_PLUGINS.md) - Official XEMS, Route Optimization, and Maintenance plugins.
|
|
167
162
|
- [Console Intercept Hook](./docs/CONSOLE_INTERCEPT_HOOK.md) - Console monitoring.
|
|
168
163
|
|
|
@@ -180,6 +175,34 @@ app.start();
|
|
|
180
175
|
|
|
181
176
|
XyPriss is built with security as a fundamental design principle. The framework implements multiple layers of protection and follows industry best practices for secure web application development.
|
|
182
177
|
|
|
178
|
+
### Native URI Normalization & Anti-ReDoS Engine
|
|
179
|
+
|
|
180
|
+
XyPriss intercepts every request at the lowest level to enforce strict security normalizations before routing occurs:
|
|
181
|
+
|
|
182
|
+
- **Path Traversal Protection**: Eradicates directory climbing (`..`, `//`) and bypasses utilizing complex double-encodings (e.g., `%252E%252E`).
|
|
183
|
+
- **Input Sanitization**: Automatically normalizes Unicode segments (NFC), strips dangerous null bytes, and removes invisible control characters.
|
|
184
|
+
- **Anti-ReDoS Sandbox**: All internal Regex evaluations run securely inside an isolated Node.js `vm` context with an adaptive execution timeout. This guarantees that complex Regex attacks (ReDoS) are cleanly aborted and cannot freeze the main event loop.
|
|
185
|
+
|
|
186
|
+
### Dynamic Honeypot Tarpit
|
|
187
|
+
|
|
188
|
+
XyPriss features a built-in Honeypot Tarpit designed to instantly neutralize connections from malicious botnets, vulnerability scanners, and automated exploit frameworks. Operating at the earliest phase of the request handling lifecycle, it drops malicious probes before routing, regex matching, or session loading occur.
|
|
189
|
+
|
|
190
|
+
- **Logic**: Analyzes paths across 6 distinct normalization and signature stages.
|
|
191
|
+
- **Immediate Neutralization**: Drops connection softly via lightweight `403 Forbidden` response to avoid terminating Keep-Alive sockets on reverse proxies.
|
|
192
|
+
- **Configurable Control**: Enabled automatically, easily configurable from `ServerOptions`.
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
import { createServer } from "xypriss";
|
|
196
|
+
|
|
197
|
+
const app = createServer({
|
|
198
|
+
security: {
|
|
199
|
+
honeypotTarpit: false, // Allows you to opt-out if needed
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**[Read the Honeypot Tarpit documentation for detailed internal logic and capabilities →](./docs/security/HONEYPOT_TARPIT.md)**
|
|
205
|
+
|
|
183
206
|
### XEMS — Encrypted Memory Store
|
|
184
207
|
|
|
185
208
|
[XEMS](https://github.com/Nehonix-Team/XyPriss-XEMS) is the built-in session security layer. Unlike cookie-based JWT, XEMS stores all session data **server-side inside a native Go sidecar process**, encrypted with AES-256-GCM. The client only ever holds a random opaque token.
|
|
@@ -212,7 +235,7 @@ app.get("/profile", (req, res) => {
|
|
|
212
235
|
});
|
|
213
236
|
```
|
|
214
237
|
|
|
215
|
-
**[Full XEMS Guide →](./docs/XEMS_TUTORIAL.md)**
|
|
238
|
+
**[Full XEMS Technical Guide →](./docs/security/xems/README.md)** | **[Tutorial →](./docs/XEMS_TUTORIAL.md)**
|
|
216
239
|
|
|
217
240
|
### Application Immutability
|
|
218
241
|
|
|
@@ -221,12 +244,23 @@ To prevent runtime hijacking and ensure system-wide stability, XyPriss implement
|
|
|
221
244
|
- **Blocked Actions**: Any attempt to add, modify, or delete properties from the `app` instance will throw a fatal `[XyPriss Security]` error.
|
|
222
245
|
- **Reasoning**: This ensures that security middleware, core handlers, and framework configurations cannot be tampered with after initialization.
|
|
223
246
|
|
|
224
|
-
### Plugin Security
|
|
247
|
+
### Zero-Trust Plugin Security
|
|
248
|
+
|
|
249
|
+
XyPriss implements a Zero-Trust security model for its plugin ecosystem, ensuring decentralized identity and portable integrity verification.
|
|
250
|
+
|
|
251
|
+
- **Decentralized Identity**: Every plugin author generates a unique Ed25519 identity key. No centralized authority is required.
|
|
252
|
+
- **Portable Integrity**: Plugins are cryptographically signed (SHA-256 + Ed25519). The signature travels with the package, allowing offline verification.
|
|
253
|
+
- **Deep Audit Engine**: The XHSC core performs a mandatory, high-performance security audit upon engine startup, verifying every plugin against pinned author keys.
|
|
254
|
+
- **Author Key Pinning**: Trusted authors are pinned within the project configuration (`xypriss.config.jsonc`), preventing unauthorized plugin execution or "Evil Upgrades."
|
|
255
|
+
|
|
256
|
+
**[Read the Plugin Signature Specification for detailed security mechanics →](./docs/plugins/PLUGIN_SIGNATURE_SPEC.md)**
|
|
257
|
+
|
|
258
|
+
### Plugin Permissions
|
|
225
259
|
|
|
226
|
-
XyPriss uses a
|
|
260
|
+
XyPriss uses a Capability-Based Security Model for plugins. Each plugin operates within its own restricted server instance.
|
|
227
261
|
|
|
228
262
|
- **Zero-Trust Configs**: By default, plugins cannot access `server.app.configs`. Accessing this property will return `undefined`.
|
|
229
|
-
- **Explicit Permissions**: Privileged access to the full server configuration must be explicitly granted via the `PLG.SECURITY.ACCESS_CONFIGS` permission
|
|
263
|
+
- **Explicit Permissions**: Privileged access to the full server configuration must be explicitly granted via the `PLG.SECURITY.ACCESS_CONFIGS` permission.
|
|
230
264
|
|
|
231
265
|
**[Learn more about Plugin Permissions →](./docs/plugins/PLUGIN_PERMISSIONS.md)**
|
|
232
266
|
|
|
@@ -240,7 +274,6 @@ No need for `dotenv` or other external packages. XyPriss automatically loads var
|
|
|
240
274
|
|
|
241
275
|
1. `.env`
|
|
242
276
|
2. `.env.local`
|
|
243
|
-
3. `.private/.env` (Priority)
|
|
244
277
|
|
|
245
278
|
#### 2. The Shield in Action
|
|
246
279
|
|
package/dist/cjs/src/index.js
CHANGED
|
@@ -19,8 +19,6 @@ var getIp = require('./utils/getIp.js');
|
|
|
19
19
|
var ProjectDiscovery = require('./utils/ProjectDiscovery.js');
|
|
20
20
|
var XemsPlugin = require('./plugins/builtin/xems/XemsPlugin.js');
|
|
21
21
|
var getMime = require('./utils/getMime.js');
|
|
22
|
-
var xyprissSecurity = require('xypriss-security');
|
|
23
|
-
var safeJsonMiddleware = require('./middleware/safe-json-middleware.js');
|
|
24
22
|
var FiUp = require('./FiUp.js');
|
|
25
23
|
|
|
26
24
|
/***************************************************************************
|
|
@@ -90,23 +88,6 @@ exports.identifyProjectRoot = ProjectDiscovery.identifyProjectRoot;
|
|
|
90
88
|
exports.xems = XemsPlugin.xems;
|
|
91
89
|
exports.getMime = getMime.getMime;
|
|
92
90
|
exports.getMimes = getMime.getMimes;
|
|
93
|
-
Object.defineProperty(exports, "XyPriStringify", {
|
|
94
|
-
enumerable: true,
|
|
95
|
-
get: function () { return xyprissSecurity.XyPriStringify; }
|
|
96
|
-
});
|
|
97
|
-
Object.defineProperty(exports, "fastStringify", {
|
|
98
|
-
enumerable: true,
|
|
99
|
-
get: function () { return xyprissSecurity.fastStringify; }
|
|
100
|
-
});
|
|
101
|
-
Object.defineProperty(exports, "safeStringify", {
|
|
102
|
-
enumerable: true,
|
|
103
|
-
get: function () { return xyprissSecurity.safeStringify; }
|
|
104
|
-
});
|
|
105
|
-
exports.createCircularRefDebugger = safeJsonMiddleware.createCircularRefDebugger;
|
|
106
|
-
exports.createSafeJsonMiddleware = safeJsonMiddleware.createSafeJsonMiddleware;
|
|
107
|
-
exports.safeJsonStringify = safeJsonMiddleware.safeJsonStringify;
|
|
108
|
-
exports.sendSafeJson = safeJsonMiddleware.sendSafeJson;
|
|
109
|
-
exports.setupSafeJson = safeJsonMiddleware.setupSafeJson;
|
|
110
91
|
exports.initializeFileUpload = FiUp.initializeFileUpload;
|
|
111
92
|
exports.uploadAny = FiUp.uploadAny;
|
|
112
93
|
exports.uploadArray = FiUp.uploadArray;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":["configLoader","XyPrissRouter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":["configLoader","XyPrissRouter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBiF;AACjF;AAEA;AACA;AAqBA;AACA,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;IACnCA,yBAAY,CAAC,qBAAqB,EAAE;AACxC;AA+BA;;AAEG;SACa,MAAM,GAAA;IAClB,OAAO,IAAIC,sBAAa,CAAC;AACrB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,MAAM,EAAE,KAAK;AAChB,KAAA,CAAC;AACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var helmet = require('helmet');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var XyPrissCors = require('./security/XyPrissCors.js');
|
|
5
|
+
var XyPrissHPP = require('./security/XyPrissHPP.js');
|
|
6
6
|
var xss = require('xss');
|
|
7
7
|
var morgan = require('morgan');
|
|
8
8
|
var compression = require('xypriss-compression-pluging');
|
|
@@ -175,7 +175,7 @@ class BuiltInMiddleware {
|
|
|
175
175
|
config.origin = this.createAdvancedOriginFunction(validOrigins);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
return
|
|
178
|
+
return XyPrissCors.xyprissCors(config);
|
|
179
179
|
}
|
|
180
180
|
/**
|
|
181
181
|
* Create an advanced origin function that supports strings, RegExp, and wildcards
|
|
@@ -313,7 +313,7 @@ class BuiltInMiddleware {
|
|
|
313
313
|
whitelist: ["tags", "categories"], // Allow arrays for these parameters
|
|
314
314
|
};
|
|
315
315
|
const config = mergeWithDefaults.mergeWithDefaults(defaultOptions, options);
|
|
316
|
-
return
|
|
316
|
+
return XyPrissHPP.xyprissHPP(config);
|
|
317
317
|
}
|
|
318
318
|
/**
|
|
319
319
|
* Get XSS protection middleware
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltInMiddleware.js","sources":["../../../../../src/middleware/built-in/BuiltInMiddleware.ts"],"sourcesContent":[null],"names":["mergeWithDefaults","shouldCompress","Logger","doubleCsrf","BrowserOnlyProtector","TerminalOnlyProtector","MobileOnlyProtector","RequestSignatureProtector"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BuiltInMiddleware.js","sources":["../../../../../src/middleware/built-in/BuiltInMiddleware.ts"],"sourcesContent":[null],"names":["mergeWithDefaults","cors","shouldCompress","Logger","doubleCsrf","hpp","BrowserOnlyProtector","TerminalOnlyProtector","MobileOnlyProtector","RequestSignatureProtector"],"mappings":"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"}
|