@freshguard/freshguard-core 0.13.2 → 0.15.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/CHANGELOG.md +15 -1
- package/README.md +74 -1
- package/SKILL.md +229 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +74 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/connectors/azure-sql.d.ts +121 -0
- package/dist/connectors/azure-sql.d.ts.map +1 -0
- package/dist/connectors/azure-sql.js +489 -0
- package/dist/connectors/azure-sql.js.map +1 -0
- package/dist/connectors/base-connector.d.ts +139 -0
- package/dist/connectors/base-connector.d.ts.map +1 -1
- package/dist/connectors/base-connector.js +160 -3
- package/dist/connectors/base-connector.js.map +1 -1
- package/dist/connectors/bigquery.d.ts +100 -0
- package/dist/connectors/bigquery.d.ts.map +1 -1
- package/dist/connectors/bigquery.js +143 -2
- package/dist/connectors/bigquery.js.map +1 -1
- package/dist/connectors/duckdb.d.ts +96 -0
- package/dist/connectors/duckdb.d.ts.map +1 -1
- package/dist/connectors/duckdb.js +144 -7
- package/dist/connectors/duckdb.js.map +1 -1
- package/dist/connectors/index.d.ts +28 -0
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +28 -0
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/mssql.d.ts +119 -0
- package/dist/connectors/mssql.d.ts.map +1 -0
- package/dist/connectors/mssql.js +483 -0
- package/dist/connectors/mssql.js.map +1 -0
- package/dist/connectors/mysql.d.ts +85 -0
- package/dist/connectors/mysql.d.ts.map +1 -1
- package/dist/connectors/mysql.js +118 -3
- package/dist/connectors/mysql.js.map +1 -1
- package/dist/connectors/postgres.d.ts +85 -0
- package/dist/connectors/postgres.d.ts.map +1 -1
- package/dist/connectors/postgres.js +113 -6
- package/dist/connectors/postgres.js.map +1 -1
- package/dist/connectors/redshift.d.ts +90 -0
- package/dist/connectors/redshift.d.ts.map +1 -1
- package/dist/connectors/redshift.js +131 -7
- package/dist/connectors/redshift.js.map +1 -1
- package/dist/connectors/snowflake.d.ts +108 -0
- package/dist/connectors/snowflake.d.ts.map +1 -1
- package/dist/connectors/snowflake.js +137 -3
- package/dist/connectors/snowflake.js.map +1 -1
- package/dist/connectors/synapse.d.ts +123 -0
- package/dist/connectors/synapse.d.ts.map +1 -0
- package/dist/connectors/synapse.js +495 -0
- package/dist/connectors/synapse.js.map +1 -0
- package/dist/db/index.d.ts +25 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +23 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrate.d.ts +23 -0
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +38 -0
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/schema.d.ts +11 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +70 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/errors/debug-factory.d.ts +38 -0
- package/dist/errors/debug-factory.d.ts.map +1 -1
- package/dist/errors/debug-factory.js +40 -0
- package/dist/errors/debug-factory.js.map +1 -1
- package/dist/errors/index.d.ts +59 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +110 -7
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +32 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata/duckdb-storage.d.ts +3 -0
- package/dist/metadata/duckdb-storage.d.ts.map +1 -1
- package/dist/metadata/duckdb-storage.js +6 -0
- package/dist/metadata/duckdb-storage.js.map +1 -1
- package/dist/metadata/factory.d.ts +30 -0
- package/dist/metadata/factory.d.ts.map +1 -1
- package/dist/metadata/factory.js +31 -0
- package/dist/metadata/factory.js.map +1 -1
- package/dist/metadata/index.d.ts +26 -0
- package/dist/metadata/index.d.ts.map +1 -1
- package/dist/metadata/index.js +26 -0
- package/dist/metadata/index.js.map +1 -1
- package/dist/metadata/interface.d.ts +33 -0
- package/dist/metadata/interface.d.ts.map +1 -1
- package/dist/metadata/interface.js +3 -0
- package/dist/metadata/interface.js.map +1 -1
- package/dist/metadata/postgresql-storage.d.ts +3 -0
- package/dist/metadata/postgresql-storage.d.ts.map +1 -1
- package/dist/metadata/postgresql-storage.js +12 -2
- package/dist/metadata/postgresql-storage.js.map +1 -1
- package/dist/metadata/schema-config.d.ts +53 -0
- package/dist/metadata/schema-config.d.ts.map +1 -1
- package/dist/metadata/schema-config.js +64 -0
- package/dist/metadata/schema-config.js.map +1 -1
- package/dist/metadata/types.d.ts +3 -0
- package/dist/metadata/types.d.ts.map +1 -1
- package/dist/metadata/types.js +3 -0
- package/dist/metadata/types.js.map +1 -1
- package/dist/monitor/baseline-calculator.d.ts +56 -0
- package/dist/monitor/baseline-calculator.d.ts.map +1 -1
- package/dist/monitor/baseline-calculator.js +72 -0
- package/dist/monitor/baseline-calculator.js.map +1 -1
- package/dist/monitor/baseline-config.d.ts +77 -0
- package/dist/monitor/baseline-config.d.ts.map +1 -1
- package/dist/monitor/baseline-config.js +79 -1
- package/dist/monitor/baseline-config.js.map +1 -1
- package/dist/monitor/freshness.d.ts +40 -0
- package/dist/monitor/freshness.d.ts.map +1 -1
- package/dist/monitor/freshness.js +82 -3
- package/dist/monitor/freshness.js.map +1 -1
- package/dist/monitor/index.d.ts +29 -0
- package/dist/monitor/index.d.ts.map +1 -1
- package/dist/monitor/index.js +29 -0
- package/dist/monitor/index.js.map +1 -1
- package/dist/monitor/schema-baseline.d.ts +45 -0
- package/dist/monitor/schema-baseline.d.ts.map +1 -1
- package/dist/monitor/schema-baseline.js +63 -5
- package/dist/monitor/schema-baseline.js.map +1 -1
- package/dist/monitor/schema-changes.d.ts +45 -0
- package/dist/monitor/schema-changes.d.ts.map +1 -1
- package/dist/monitor/schema-changes.js +85 -0
- package/dist/monitor/schema-changes.js.map +1 -1
- package/dist/monitor/volume.d.ts +43 -0
- package/dist/monitor/volume.d.ts.map +1 -1
- package/dist/monitor/volume.js +89 -0
- package/dist/monitor/volume.js.map +1 -1
- package/dist/observability/logger.d.ts +91 -0
- package/dist/observability/logger.d.ts.map +1 -1
- package/dist/observability/logger.js +108 -0
- package/dist/observability/logger.js.map +1 -1
- package/dist/observability/metrics.d.ts +140 -0
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +184 -7
- package/dist/observability/metrics.js.map +1 -1
- package/dist/resilience/circuit-breaker.d.ts +112 -2
- package/dist/resilience/circuit-breaker.d.ts.map +1 -1
- package/dist/resilience/circuit-breaker.js +140 -6
- package/dist/resilience/circuit-breaker.js.map +1 -1
- package/dist/resilience/index.d.ts +9 -0
- package/dist/resilience/index.d.ts.map +1 -1
- package/dist/resilience/index.js +13 -0
- package/dist/resilience/index.js.map +1 -1
- package/dist/resilience/retry-policy.d.ts +105 -0
- package/dist/resilience/retry-policy.d.ts.map +1 -1
- package/dist/resilience/retry-policy.js +158 -7
- package/dist/resilience/retry-policy.js.map +1 -1
- package/dist/resilience/timeout-manager.d.ts +137 -0
- package/dist/resilience/timeout-manager.d.ts.map +1 -1
- package/dist/resilience/timeout-manager.js +151 -4
- package/dist/resilience/timeout-manager.js.map +1 -1
- package/dist/security/query-analyzer.d.ts +124 -0
- package/dist/security/query-analyzer.d.ts.map +1 -1
- package/dist/security/query-analyzer.js +150 -9
- package/dist/security/query-analyzer.js.map +1 -1
- package/dist/security/schema-cache.d.ts +152 -0
- package/dist/security/schema-cache.d.ts.map +1 -1
- package/dist/security/schema-cache.js +144 -12
- package/dist/security/schema-cache.js.map +1 -1
- package/dist/types/connector.d.ts +68 -1
- package/dist/types/connector.d.ts.map +1 -1
- package/dist/types/connector.js +38 -15
- package/dist/types/connector.js.map +1 -1
- package/dist/types/driver-results.d.ts +28 -0
- package/dist/types/driver-results.d.ts.map +1 -1
- package/dist/types/driver-results.js +12 -0
- package/dist/types/driver-results.js.map +1 -1
- package/dist/types.d.ts +113 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/dist/validation/index.d.ts +8 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +12 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/runtime-validator.d.ts +98 -0
- package/dist/validation/runtime-validator.d.ts.map +1 -1
- package/dist/validation/runtime-validator.js +114 -1
- package/dist/validation/runtime-validator.js.map +1 -1
- package/dist/validation/sanitizers.d.ts +59 -0
- package/dist/validation/sanitizers.d.ts.map +1 -1
- package/dist/validation/sanitizers.js +104 -20
- package/dist/validation/sanitizers.js.map +1 -1
- package/dist/validation/schemas.d.ts +73 -0
- package/dist/validation/schemas.d.ts.map +1 -1
- package/dist/validation/schemas.js +132 -5
- package/dist/validation/schemas.js.map +1 -1
- package/dist/validators/index.d.ts +54 -0
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +93 -2
- package/dist/validators/index.js.map +1 -1
- package/package.json +6 -2
|
@@ -1,12 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod validation schemas for FreshGuard Core Phase 2
|
|
3
|
+
*
|
|
4
|
+
* Replaces manual validation functions with declarative Zod schemas
|
|
5
|
+
* for better error handling, type safety, and maintainability.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
1
9
|
import { z } from 'zod';
|
|
10
|
+
// ==============================================
|
|
11
|
+
// Constants
|
|
12
|
+
// ==============================================
|
|
13
|
+
/**
|
|
14
|
+
* SQL reserved keywords that should not be used as identifiers
|
|
15
|
+
*/
|
|
2
16
|
const SQL_RESERVED_KEYWORDS = [
|
|
17
|
+
// Core SQL keywords
|
|
3
18
|
'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'DROP', 'ALTER', 'CREATE',
|
|
4
19
|
'TABLE', 'FROM', 'WHERE', 'AND', 'OR', 'NOT', 'NULL', 'TRUE', 'FALSE',
|
|
5
20
|
'COUNT', 'MAX', 'MIN', 'SUM', 'AVG', 'DISTINCT', 'ORDER', 'GROUP', 'BY',
|
|
21
|
+
// Additional dangerous keywords
|
|
6
22
|
'EXEC', 'EXECUTE', 'TRUNCATE', 'GRANT', 'REVOKE', 'UNION', 'MERGE',
|
|
7
23
|
'CALL', 'DECLARE', 'SET', 'USE', 'SHOW', 'DESCRIBE', 'EXPLAIN',
|
|
24
|
+
// Database-specific system functions and procedures
|
|
8
25
|
'XP_', 'SP_', 'SYS', 'INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA'
|
|
9
26
|
];
|
|
27
|
+
/**
|
|
28
|
+
* Dangerous SQL patterns that should not appear in connection strings
|
|
29
|
+
*/
|
|
10
30
|
const DANGEROUS_SQL_PATTERNS = [
|
|
11
31
|
/drop\s+table/i,
|
|
12
32
|
/delete\s+from/i,
|
|
@@ -20,29 +40,52 @@ const DANGEROUS_SQL_PATTERNS = [
|
|
|
20
40
|
/xp_/i,
|
|
21
41
|
/sp_/i
|
|
22
42
|
];
|
|
43
|
+
// ==============================================
|
|
44
|
+
// Base Identifier Schemas
|
|
45
|
+
// ==============================================
|
|
46
|
+
/**
|
|
47
|
+
* Schema for validating SQL identifiers (base pattern)
|
|
48
|
+
* Allows letters, numbers, underscores, starting with letter or underscore
|
|
49
|
+
*/
|
|
23
50
|
const BaseIdentifierSchema = z.string()
|
|
24
51
|
.min(1, 'Identifier cannot be empty')
|
|
25
52
|
.max(256, 'Identifier too long (max 256 characters)')
|
|
26
53
|
.regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/, 'Identifier must start with letter or underscore, contain only alphanumeric characters and underscores');
|
|
54
|
+
/**
|
|
55
|
+
* Schema for validating table names
|
|
56
|
+
* Supports schema.table notation (e.g., "public.users")
|
|
57
|
+
*/
|
|
27
58
|
export const TableNameSchema = z.string()
|
|
28
59
|
.min(1, 'Table name cannot be empty')
|
|
29
60
|
.max(256, 'Table name too long (max 256 characters)')
|
|
30
|
-
.regex(
|
|
61
|
+
.regex(
|
|
62
|
+
// eslint-disable-next-line security/detect-unsafe-regex -- Bounded input (max 256 chars), no catastrophic backtracking
|
|
63
|
+
/^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)?$/, 'Table name must be a valid identifier or schema.table format')
|
|
31
64
|
.refine((name) => {
|
|
65
|
+
// Check each part of schema.table notation against reserved keywords
|
|
32
66
|
const parts = name.split('.');
|
|
33
67
|
return !parts.some(part => SQL_RESERVED_KEYWORDS.includes(part.toUpperCase()));
|
|
34
68
|
}, {
|
|
35
69
|
message: "Table name contains reserved SQL keywords"
|
|
36
70
|
})
|
|
37
71
|
.refine((name) => {
|
|
72
|
+
// Additional security check - ensure no dangerous patterns
|
|
73
|
+
// eslint-disable-next-line no-control-regex -- Intentional: blocking control chars in identifiers
|
|
38
74
|
return !(/[;/*\x00-\x1F\x7F]|--/.exec(name));
|
|
39
75
|
}, 'Table name contains dangerous characters');
|
|
76
|
+
/**
|
|
77
|
+
* Schema for validating column names
|
|
78
|
+
* Column names don't support schema notation
|
|
79
|
+
*/
|
|
40
80
|
export const ColumnNameSchema = BaseIdentifierSchema
|
|
41
81
|
.refine((name) => {
|
|
42
82
|
return !SQL_RESERVED_KEYWORDS.includes(name.toUpperCase());
|
|
43
83
|
}, {
|
|
44
84
|
message: "Column name is a reserved SQL keyword"
|
|
45
85
|
});
|
|
86
|
+
/**
|
|
87
|
+
* Schema for validating database identifiers (generic)
|
|
88
|
+
*/
|
|
46
89
|
export const DatabaseIdentifierSchema = z.object({
|
|
47
90
|
identifier: z.string(),
|
|
48
91
|
type: z.enum(['table', 'column']).default('table')
|
|
@@ -54,45 +97,76 @@ export const DatabaseIdentifierSchema = z.object({
|
|
|
54
97
|
return ColumnNameSchema.parse(identifier);
|
|
55
98
|
}
|
|
56
99
|
});
|
|
100
|
+
// ==============================================
|
|
101
|
+
// Network and Connection Schemas
|
|
102
|
+
// ==============================================
|
|
103
|
+
/**
|
|
104
|
+
* Schema for validating hostnames and IP addresses
|
|
105
|
+
*/
|
|
57
106
|
export const HostnameSchema = z.string()
|
|
58
107
|
.min(1, 'Host is required')
|
|
59
108
|
.max(255, 'Host name too long (max 255 characters)')
|
|
60
109
|
.regex(/^[a-zA-Z0-9\-.]+$/, 'Invalid host name format')
|
|
61
110
|
.refine((host) => {
|
|
111
|
+
// Prevent localhost variations in production (configurable)
|
|
62
112
|
const isLocalhost = /^(localhost|127\.|::1|0\.0\.0\.0)/.test(host);
|
|
63
113
|
return !isLocalhost || process.env.NODE_ENV !== 'production';
|
|
64
114
|
}, 'Localhost connections not allowed in production');
|
|
115
|
+
/**
|
|
116
|
+
* Schema for validating port numbers
|
|
117
|
+
*/
|
|
65
118
|
export const PortSchema = z.number()
|
|
66
119
|
.int('Port must be an integer')
|
|
67
120
|
.min(1, 'Port must be at least 1')
|
|
68
121
|
.max(65535, 'Port must be at most 65535')
|
|
69
122
|
.refine((port) => {
|
|
123
|
+
// Warn about common dangerous ports (FTP, Telnet, etc.)
|
|
70
124
|
const dangerousPorts = [21, 23, 25, 53, 69, 135, 139, 445];
|
|
71
125
|
return !dangerousPorts.includes(port);
|
|
72
126
|
}, 'Port number may be unsafe for database connections');
|
|
127
|
+
/**
|
|
128
|
+
* Schema for validating timeout values (milliseconds)
|
|
129
|
+
*/
|
|
73
130
|
export const TimeoutSchema = z.number()
|
|
74
131
|
.int('Timeout must be an integer')
|
|
75
132
|
.min(1000, 'Timeout must be at least 1000ms (1 second)')
|
|
76
133
|
.max(300000, 'Timeout cannot exceed 300000ms (5 minutes)');
|
|
134
|
+
/**
|
|
135
|
+
* Schema for validating query timeout values (shorter than connection timeout)
|
|
136
|
+
*/
|
|
77
137
|
export const QueryTimeoutSchema = z.number()
|
|
78
138
|
.int('Query timeout must be an integer')
|
|
79
139
|
.min(1000, 'Query timeout must be at least 1000ms (1 second)')
|
|
80
140
|
.max(60000, 'Query timeout cannot exceed 60000ms (1 minute)');
|
|
141
|
+
/**
|
|
142
|
+
* Schema for validating maximum row limits
|
|
143
|
+
*/
|
|
81
144
|
export const MaxRowsSchema = z.number()
|
|
82
145
|
.int('Max rows must be an integer')
|
|
83
146
|
.min(1, 'Max rows must be at least 1')
|
|
84
147
|
.max(10000, 'Max rows cannot exceed 10000');
|
|
148
|
+
// ==============================================
|
|
149
|
+
// Connector Configuration Schemas
|
|
150
|
+
// ==============================================
|
|
151
|
+
/**
|
|
152
|
+
* Schema for validating database credentials
|
|
153
|
+
*/
|
|
85
154
|
export const DatabaseCredentialsSchema = z.object({
|
|
86
155
|
username: z.string()
|
|
87
156
|
.min(1, 'Username is required')
|
|
88
157
|
.max(64, 'Username too long (max 64 characters)')
|
|
89
158
|
.refine((username) => {
|
|
159
|
+
// Prevent obvious injection attempts in username
|
|
160
|
+
// eslint-disable-next-line no-control-regex -- Intentional: blocking control chars in credentials
|
|
90
161
|
return !(/[;/*\x00-\x1F\x7F]|--/.exec(username));
|
|
91
162
|
}, 'Username contains invalid characters'),
|
|
92
163
|
password: z.string()
|
|
93
164
|
.min(1, 'Password is required')
|
|
94
165
|
.max(256, 'Password too long (max 256 characters)')
|
|
95
166
|
});
|
|
167
|
+
/**
|
|
168
|
+
* Schema for validating database names
|
|
169
|
+
*/
|
|
96
170
|
export const DatabaseNameSchema = z.string()
|
|
97
171
|
.min(1, 'Database name is required')
|
|
98
172
|
.max(64, 'Database name too long (max 64 characters)')
|
|
@@ -100,6 +174,9 @@ export const DatabaseNameSchema = z.string()
|
|
|
100
174
|
.refine((name) => {
|
|
101
175
|
return !SQL_RESERVED_KEYWORDS.includes(name.toUpperCase());
|
|
102
176
|
}, 'Database name cannot be a reserved SQL keyword');
|
|
177
|
+
/**
|
|
178
|
+
* Base connector configuration schema
|
|
179
|
+
*/
|
|
103
180
|
export const BaseConnectorConfigSchema = z.object({
|
|
104
181
|
host: HostnameSchema,
|
|
105
182
|
port: PortSchema.optional(),
|
|
@@ -112,6 +189,7 @@ export const BaseConnectorConfigSchema = z.object({
|
|
|
112
189
|
maxRows: MaxRowsSchema.optional(),
|
|
113
190
|
applicationName: z.string().max(64).optional()
|
|
114
191
|
}).refine((config) => {
|
|
192
|
+
// Ensure query timeout is less than connection timeout
|
|
115
193
|
if (config.timeout && config.queryTimeout && config.queryTimeout >= config.timeout) {
|
|
116
194
|
return false;
|
|
117
195
|
}
|
|
@@ -120,46 +198,62 @@ export const BaseConnectorConfigSchema = z.object({
|
|
|
120
198
|
message: 'Query timeout must be less than connection timeout',
|
|
121
199
|
path: ['queryTimeout']
|
|
122
200
|
});
|
|
201
|
+
/**
|
|
202
|
+
* PostgreSQL-specific connector configuration
|
|
203
|
+
*/
|
|
123
204
|
export const PostgresConnectorConfigSchema = BaseConnectorConfigSchema.extend({
|
|
124
205
|
schema: z.string().max(64).optional(),
|
|
125
206
|
sslMode: z.enum(['disable', 'allow', 'prefer', 'require', 'verify-ca', 'verify-full']).default('require')
|
|
126
207
|
});
|
|
208
|
+
/**
|
|
209
|
+
* DuckDB-specific connector configuration (file-based)
|
|
210
|
+
*/
|
|
127
211
|
export const DuckDBConnectorConfigSchema = z.object({
|
|
128
212
|
database: z.string()
|
|
129
213
|
.min(1, 'Database path is required')
|
|
130
214
|
.max(1024, 'Database path too long')
|
|
131
215
|
.refine((path) => {
|
|
216
|
+
// Allow :memory: for in-memory databases
|
|
132
217
|
if (path === ':memory:')
|
|
133
218
|
return true;
|
|
219
|
+
// Prevent directory traversal attacks
|
|
134
220
|
return !path.includes('..') && !path.includes('//');
|
|
135
221
|
}, 'Invalid database path')
|
|
136
222
|
.refine((path) => {
|
|
223
|
+
// Prevent access to system directories
|
|
137
224
|
const systemDirs = ['/etc/', '/sys/', '/proc/', '/dev/', '/var/'];
|
|
138
225
|
return path === ':memory:' || !systemDirs.some(dir => path.startsWith(dir));
|
|
139
226
|
}, 'Cannot access system directories'),
|
|
140
|
-
readOnly: z.boolean().default(true),
|
|
227
|
+
readOnly: z.boolean().default(true), // Default to read-only for security
|
|
141
228
|
timeout: TimeoutSchema.optional(),
|
|
142
229
|
queryTimeout: QueryTimeoutSchema.optional(),
|
|
143
230
|
maxRows: MaxRowsSchema.optional()
|
|
144
231
|
});
|
|
232
|
+
/**
|
|
233
|
+
* BigQuery-specific connector configuration
|
|
234
|
+
*/
|
|
145
235
|
export const BigQueryConnectorConfigSchema = z.object({
|
|
146
236
|
projectId: z.string()
|
|
147
237
|
.min(1, 'Project ID is required')
|
|
148
238
|
.max(63, 'Project ID too long')
|
|
149
239
|
.regex(/^[a-z0-9-]+$/, 'Project ID must contain only lowercase letters, numbers, and hyphens'),
|
|
150
|
-
keyFilename: z.string().optional(),
|
|
151
|
-
credentials: z.object({}).passthrough().optional(),
|
|
240
|
+
keyFilename: z.string().optional(), // Path to service account JSON
|
|
241
|
+
credentials: z.object({}).passthrough().optional(), // Service account JSON object
|
|
152
242
|
dataset: z.string().max(1024).optional(),
|
|
153
243
|
location: z.string().max(64).optional(),
|
|
154
244
|
timeout: TimeoutSchema.optional(),
|
|
155
245
|
queryTimeout: QueryTimeoutSchema.optional(),
|
|
156
246
|
maxRows: MaxRowsSchema.optional()
|
|
157
247
|
}).refine((config) => {
|
|
248
|
+
// Must have either keyFilename or credentials
|
|
158
249
|
return config.keyFilename ?? config.credentials;
|
|
159
250
|
}, {
|
|
160
251
|
message: 'Either keyFilename or credentials must be provided',
|
|
161
252
|
path: ['credentials']
|
|
162
253
|
});
|
|
254
|
+
/**
|
|
255
|
+
* Snowflake-specific connector configuration
|
|
256
|
+
*/
|
|
163
257
|
export const SnowflakeConnectorConfigSchema = z.object({
|
|
164
258
|
account: z.string()
|
|
165
259
|
.min(1, 'Account is required')
|
|
@@ -177,15 +271,26 @@ export const SnowflakeConnectorConfigSchema = z.object({
|
|
|
177
271
|
queryTimeout: QueryTimeoutSchema.optional(),
|
|
178
272
|
maxRows: MaxRowsSchema.optional()
|
|
179
273
|
});
|
|
274
|
+
// ==============================================
|
|
275
|
+
// Input Sanitization Schemas
|
|
276
|
+
// ==============================================
|
|
277
|
+
/**
|
|
278
|
+
* Schema for sanitizing and validating string inputs
|
|
279
|
+
*/
|
|
180
280
|
export const SanitizedStringSchema = z.string()
|
|
181
281
|
.min(1, 'Input cannot be empty')
|
|
182
282
|
.max(256, 'Input too long (max 256 characters)')
|
|
183
283
|
.transform((input) => input.trim())
|
|
184
284
|
.refine((input) => input.length > 0, 'Input is empty after sanitization')
|
|
185
285
|
.transform((input) => {
|
|
286
|
+
// Remove dangerous characters
|
|
287
|
+
// eslint-disable-next-line no-control-regex -- Intentional: sanitizing control chars from input
|
|
186
288
|
return input.replace(/[;/*\x00-\x1F\x7F]|--/g, '');
|
|
187
289
|
})
|
|
188
290
|
.refine((input) => input.length > 0, 'Input is empty after removing dangerous characters');
|
|
291
|
+
/**
|
|
292
|
+
* Schema for validating SQL LIMIT values
|
|
293
|
+
*/
|
|
189
294
|
export const LimitSchema = z.union([
|
|
190
295
|
z.number().int().min(1).max(10000),
|
|
191
296
|
z.string().transform((val) => {
|
|
@@ -196,15 +301,26 @@ export const LimitSchema = z.union([
|
|
|
196
301
|
return num;
|
|
197
302
|
}).refine((num) => num >= 1 && num <= 10000, 'LIMIT must be between 1 and 10000')
|
|
198
303
|
]);
|
|
304
|
+
/**
|
|
305
|
+
* Schema for validating connection strings
|
|
306
|
+
*/
|
|
199
307
|
export const ConnectionStringSchema = z.string()
|
|
200
308
|
.min(1, 'Connection string cannot be empty')
|
|
201
309
|
.max(2048, 'Connection string too long (max 2048 characters)')
|
|
202
310
|
.refine((connStr) => {
|
|
311
|
+
// Must contain host or server specification
|
|
203
312
|
return /(?:host|server|hostname)=/i.test(connStr);
|
|
204
313
|
}, 'Connection string must contain host/server specification')
|
|
205
314
|
.refine((connStr) => {
|
|
315
|
+
// Must not contain dangerous SQL patterns
|
|
206
316
|
return !DANGEROUS_SQL_PATTERNS.some(pattern => pattern.test(connStr));
|
|
207
317
|
}, 'Connection string contains dangerous SQL patterns');
|
|
318
|
+
// ==============================================
|
|
319
|
+
// Monitoring Rule Schemas
|
|
320
|
+
// ==============================================
|
|
321
|
+
/**
|
|
322
|
+
* Schema for validating freshness monitoring rules
|
|
323
|
+
*/
|
|
208
324
|
export const FreshnessRuleSchema = z.object({
|
|
209
325
|
id: z.string().uuid().optional(),
|
|
210
326
|
sourceId: z.string().uuid(),
|
|
@@ -220,6 +336,9 @@ export const FreshnessRuleSchema = z.object({
|
|
|
220
336
|
.max(1440, 'Check interval cannot exceed 1440 minutes (1 day)'),
|
|
221
337
|
isActive: z.boolean().default(true)
|
|
222
338
|
});
|
|
339
|
+
/**
|
|
340
|
+
* Schema for validating volume anomaly monitoring rules
|
|
341
|
+
*/
|
|
223
342
|
export const VolumeRuleSchema = z.object({
|
|
224
343
|
id: z.string().uuid().optional(),
|
|
225
344
|
sourceId: z.string().uuid(),
|
|
@@ -231,22 +350,28 @@ export const VolumeRuleSchema = z.object({
|
|
|
231
350
|
deviationThreshold: z.number()
|
|
232
351
|
.min(0, 'Deviation threshold must be non-negative')
|
|
233
352
|
.max(10, 'Deviation threshold cannot exceed 1000%')
|
|
234
|
-
.transform((val) => val / 100),
|
|
353
|
+
.transform((val) => val / 100), // Convert percentage to decimal
|
|
235
354
|
checkIntervalMinutes: z.number()
|
|
236
355
|
.int('Check interval must be an integer')
|
|
237
356
|
.min(15, 'Check interval must be at least 15 minutes')
|
|
238
357
|
.max(1440, 'Check interval cannot exceed 1440 minutes (1 day)'),
|
|
239
358
|
isActive: z.boolean().default(true)
|
|
240
359
|
});
|
|
360
|
+
// ==============================================
|
|
361
|
+
// Export all schemas
|
|
362
|
+
// ==============================================
|
|
241
363
|
export const schemas = {
|
|
364
|
+
// Identifier schemas
|
|
242
365
|
TableNameSchema,
|
|
243
366
|
ColumnNameSchema,
|
|
244
367
|
DatabaseIdentifierSchema,
|
|
368
|
+
// Network schemas
|
|
245
369
|
HostnameSchema,
|
|
246
370
|
PortSchema,
|
|
247
371
|
TimeoutSchema,
|
|
248
372
|
QueryTimeoutSchema,
|
|
249
373
|
MaxRowsSchema,
|
|
374
|
+
// Connector configuration schemas
|
|
250
375
|
BaseConnectorConfigSchema,
|
|
251
376
|
PostgresConnectorConfigSchema,
|
|
252
377
|
DuckDBConnectorConfigSchema,
|
|
@@ -254,9 +379,11 @@ export const schemas = {
|
|
|
254
379
|
SnowflakeConnectorConfigSchema,
|
|
255
380
|
DatabaseCredentialsSchema,
|
|
256
381
|
DatabaseNameSchema,
|
|
382
|
+
// Input sanitization schemas
|
|
257
383
|
SanitizedStringSchema,
|
|
258
384
|
LimitSchema,
|
|
259
385
|
ConnectionStringSchema,
|
|
386
|
+
// Monitoring rule schemas
|
|
260
387
|
FreshnessRuleSchema,
|
|
261
388
|
VolumeRuleSchema
|
|
262
389
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation utilities for FreshGuard Core
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized validation functions to prevent injection attacks
|
|
5
|
+
* and ensure data integrity across the application.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
1
9
|
import type { ConnectorConfig } from '../types/connector.js';
|
|
10
|
+
/**
|
|
11
|
+
* Validate table name for SQL injection prevention
|
|
12
|
+
*
|
|
13
|
+
* @param name - Table name to validate
|
|
14
|
+
* @returns True if valid
|
|
15
|
+
* @throws Error if invalid
|
|
16
|
+
*/
|
|
2
17
|
export declare function validateTableName(name: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Validate column name for SQL injection prevention
|
|
20
|
+
*
|
|
21
|
+
* @param name - Column name to validate
|
|
22
|
+
* @returns True if valid
|
|
23
|
+
* @throws Error if invalid
|
|
24
|
+
*/
|
|
3
25
|
export declare function validateColumnName(name: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Validate database identifier (table or column name)
|
|
28
|
+
*
|
|
29
|
+
* @param identifier - Identifier to validate
|
|
30
|
+
* @param type - Type of identifier ('table' or 'column')
|
|
31
|
+
* @returns True if valid
|
|
32
|
+
*/
|
|
4
33
|
export declare function validateDatabaseIdentifier(identifier: string, type?: 'table' | 'column'): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Validate connector configuration for security and completeness
|
|
36
|
+
*
|
|
37
|
+
* @param config - Connector configuration to validate
|
|
38
|
+
* @throws Error if configuration is invalid
|
|
39
|
+
*/
|
|
5
40
|
export declare function validateConnectorConfig(config: Partial<ConnectorConfig>): void;
|
|
41
|
+
/**
|
|
42
|
+
* Sanitize string input to prevent injection attacks
|
|
43
|
+
*
|
|
44
|
+
* @param input - Input string to sanitize
|
|
45
|
+
* @param maxLength - Maximum allowed length
|
|
46
|
+
* @returns Sanitized string
|
|
47
|
+
*/
|
|
6
48
|
export declare function sanitizeString(input: string, maxLength?: number): string;
|
|
49
|
+
/**
|
|
50
|
+
* Validate and sanitize SQL LIMIT value
|
|
51
|
+
*
|
|
52
|
+
* @param limit - LIMIT value to validate
|
|
53
|
+
* @returns Validated limit as number
|
|
54
|
+
*/
|
|
7
55
|
export declare function validateLimit(limit: number | string): number;
|
|
56
|
+
/**
|
|
57
|
+
* Validate connection string format (basic validation)
|
|
58
|
+
*
|
|
59
|
+
* @param connectionString - Database connection string
|
|
60
|
+
* @returns True if format appears valid
|
|
61
|
+
*/
|
|
8
62
|
export declare function validateConnectionString(connectionString: string): boolean;
|
|
9
63
|
export declare const validators: {
|
|
10
64
|
readonly validateTableName: typeof validateTableName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkCvD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmCxD;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,GAAG,QAAkB,GAAG,OAAO,CAM1G;AAMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAqG9E;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAuBrE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CA0B5D;AAMD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAmC1E;AAMD,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC"}
|