@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,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base connector class with built-in security validation and observability
|
|
3
|
+
*
|
|
4
|
+
* All database connectors must extend this class to ensure consistent
|
|
5
|
+
* security measures including query validation, timeouts, error sanitization,
|
|
6
|
+
* structured logging, and metrics collection.
|
|
7
|
+
*
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
1
10
|
import { DEFAULT_SECURITY_CONFIG } from '../types/connector.js';
|
|
2
11
|
import { rowString } from '../types/driver-results.js';
|
|
3
12
|
import { SecurityError, TimeoutError } from '../errors/index.js';
|
|
@@ -6,6 +15,18 @@ import { createDatabaseLogger, logTimedOperation } from '../observability/logger
|
|
|
6
15
|
import { createComponentMetrics, timeOperation } from '../observability/metrics.js';
|
|
7
16
|
import { createQueryAnalyzer } from '../security/query-analyzer.js';
|
|
8
17
|
import { createSchemaCache, generateStructureHash } from '../security/schema-cache.js';
|
|
18
|
+
/**
|
|
19
|
+
* Abstract base connector with security and observability built-in
|
|
20
|
+
*
|
|
21
|
+
* Provides:
|
|
22
|
+
* - SQL injection prevention
|
|
23
|
+
* - Query timeouts
|
|
24
|
+
* - Connection validation
|
|
25
|
+
* - Error sanitization
|
|
26
|
+
* - Read-only query patterns
|
|
27
|
+
* - Structured logging
|
|
28
|
+
* - Metrics collection
|
|
29
|
+
*/
|
|
9
30
|
export class BaseConnector {
|
|
10
31
|
config;
|
|
11
32
|
connectionTimeout;
|
|
@@ -22,6 +43,7 @@ export class BaseConnector {
|
|
|
22
43
|
blockedKeywords;
|
|
23
44
|
constructor(config, securityConfig) {
|
|
24
45
|
this.config = config;
|
|
46
|
+
// Merge security configuration with defaults
|
|
25
47
|
const security = { ...DEFAULT_SECURITY_CONFIG, ...securityConfig };
|
|
26
48
|
this.connectionTimeout = config.timeout ?? security.connectionTimeout;
|
|
27
49
|
this.queryTimeout = config.queryTimeout ?? security.queryTimeout;
|
|
@@ -29,6 +51,7 @@ export class BaseConnector {
|
|
|
29
51
|
this.requireSSL = security.requireSSL;
|
|
30
52
|
this.allowedPatterns = security.allowedQueryPatterns;
|
|
31
53
|
this.blockedKeywords = security.blockedKeywords;
|
|
54
|
+
// Initialize observability
|
|
32
55
|
const databaseType = this.constructor.name.replace('Connector', '').toLowerCase();
|
|
33
56
|
this.logger = createDatabaseLogger(databaseType, {
|
|
34
57
|
baseContext: {
|
|
@@ -39,6 +62,7 @@ export class BaseConnector {
|
|
|
39
62
|
});
|
|
40
63
|
this.metrics = createComponentMetrics(`database_${databaseType}`);
|
|
41
64
|
this.enableDetailedLogging = security.enableDetailedLogging !== false;
|
|
65
|
+
// Initialize advanced security features
|
|
42
66
|
this.enableQueryAnalysis = security.enableQueryAnalysis !== false;
|
|
43
67
|
this.queryAnalyzer = createQueryAnalyzer({
|
|
44
68
|
maxRiskScore: security.maxQueryRiskScore ?? 70,
|
|
@@ -50,7 +74,9 @@ export class BaseConnector {
|
|
|
50
74
|
logger: this.logger.child({ component: 'schema-cache' }),
|
|
51
75
|
metrics: this.metrics
|
|
52
76
|
});
|
|
77
|
+
// Validate configuration
|
|
53
78
|
this.validateConfig(config);
|
|
79
|
+
// Log connector initialization
|
|
54
80
|
this.logger.info('Database connector initialized', {
|
|
55
81
|
database: config.database,
|
|
56
82
|
host: config.host,
|
|
@@ -64,6 +90,9 @@ export class BaseConnector {
|
|
|
64
90
|
maxQueryComplexityScore: security.maxQueryComplexityScore ?? 80
|
|
65
91
|
});
|
|
66
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Validate connector configuration for security
|
|
95
|
+
*/
|
|
67
96
|
validateConfig(config) {
|
|
68
97
|
if (!config.host) {
|
|
69
98
|
throw new Error('Host is required');
|
|
@@ -84,15 +113,27 @@ export class BaseConnector {
|
|
|
84
113
|
throw new SecurityError('SSL is required for secure connections');
|
|
85
114
|
}
|
|
86
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Validate SQL query against security rules with enhanced analysis
|
|
118
|
+
*
|
|
119
|
+
* Combines traditional pattern matching with advanced query complexity analysis
|
|
120
|
+
*/
|
|
87
121
|
async validateQuery(sql, tableNames = []) {
|
|
88
122
|
const normalizedSql = sql.trim().toUpperCase();
|
|
123
|
+
// Traditional validation (backward compatibility)
|
|
89
124
|
this.validateQueryTraditional(sql, normalizedSql);
|
|
125
|
+
// Enhanced query analysis (if enabled)
|
|
90
126
|
if (this.enableQueryAnalysis) {
|
|
91
127
|
await this.validateQueryWithAnalyzer(sql, tableNames);
|
|
92
128
|
}
|
|
93
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Traditional query validation for backward compatibility
|
|
132
|
+
*/
|
|
94
133
|
validateQueryTraditional(sql, normalizedSql) {
|
|
134
|
+
// Check for blocked keywords (whole word matching to avoid false positives)
|
|
95
135
|
for (const keyword of this.blockedKeywords) {
|
|
136
|
+
// eslint-disable-next-line security/detect-non-literal-regexp
|
|
96
137
|
const keywordRegex = new RegExp(`\\b${keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`, 'i');
|
|
97
138
|
if (keywordRegex.test(normalizedSql)) {
|
|
98
139
|
this.logger.warn('Blocked SQL keyword detected', {
|
|
@@ -102,6 +143,7 @@ export class BaseConnector {
|
|
|
102
143
|
throw new SecurityError(`Blocked keyword detected: ${keyword}`);
|
|
103
144
|
}
|
|
104
145
|
}
|
|
146
|
+
// Check for incomplete SQL clauses that could indicate malformed queries
|
|
105
147
|
const incompletePatterns = [
|
|
106
148
|
/\bWHERE\s*$/i,
|
|
107
149
|
/\bAND\s*$/i,
|
|
@@ -121,6 +163,8 @@ export class BaseConnector {
|
|
|
121
163
|
throw new SecurityError(`Incomplete SQL clause: query ends with ${matchedKeyword}`);
|
|
122
164
|
}
|
|
123
165
|
}
|
|
166
|
+
// Check if query matches allowed patterns
|
|
167
|
+
// Fix: Trim SQL to handle multiline queries with leading whitespace
|
|
124
168
|
const trimmedSql = sql.trim();
|
|
125
169
|
const isAllowed = this.allowedPatterns.some(pattern => pattern.test(trimmedSql));
|
|
126
170
|
if (!isAllowed) {
|
|
@@ -137,15 +181,23 @@ export class BaseConnector {
|
|
|
137
181
|
});
|
|
138
182
|
}
|
|
139
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Enhanced query validation using complexity analyzer
|
|
186
|
+
*/
|
|
140
187
|
async validateQueryWithAnalyzer(sql, tableNames) {
|
|
141
188
|
try {
|
|
189
|
+
// Get table metadata for analysis
|
|
142
190
|
const tableMetadata = await this.getTableMetadataForAnalysis(tableNames);
|
|
191
|
+
// Analyze query complexity
|
|
143
192
|
const analysis = this.queryAnalyzer.analyzeQuery(sql, tableMetadata);
|
|
193
|
+
// Log analysis results
|
|
144
194
|
this.logQueryAnalysis(sql, analysis);
|
|
195
|
+
// Check if query should be blocked
|
|
145
196
|
if (!analysis.allowExecution) {
|
|
146
197
|
const reason = this.getBlockingReason(analysis);
|
|
147
198
|
throw new SecurityError(`Query blocked by security analysis: ${reason}`);
|
|
148
199
|
}
|
|
200
|
+
// Log warnings if present
|
|
149
201
|
if (analysis.securityWarnings.length > 0 || analysis.performanceWarnings.length > 0) {
|
|
150
202
|
this.logger.warn('Query analysis warnings', {
|
|
151
203
|
sqlPreview: sql.substring(0, 100),
|
|
@@ -158,8 +210,9 @@ export class BaseConnector {
|
|
|
158
210
|
}
|
|
159
211
|
}
|
|
160
212
|
catch (error) {
|
|
213
|
+
// If analysis fails, fall back to traditional validation
|
|
161
214
|
if (error instanceof SecurityError) {
|
|
162
|
-
throw error;
|
|
215
|
+
throw error; // Re-throw security errors
|
|
163
216
|
}
|
|
164
217
|
this.logger.warn('Query analysis failed, using traditional validation only', {
|
|
165
218
|
error: error instanceof Error ? error.message : 'Unknown error',
|
|
@@ -167,15 +220,20 @@ export class BaseConnector {
|
|
|
167
220
|
});
|
|
168
221
|
}
|
|
169
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* Get table metadata for query analysis
|
|
225
|
+
*/
|
|
170
226
|
async getTableMetadataForAnalysis(tableNames) {
|
|
171
227
|
const metadata = [];
|
|
172
228
|
for (const tableName of tableNames) {
|
|
173
229
|
try {
|
|
230
|
+
// Try to get from cache first
|
|
174
231
|
const cached = this.schemaCache.get(this.config.database, tableName);
|
|
175
232
|
if (cached) {
|
|
176
233
|
metadata.push(this.convertCachedToTableMetadata(cached));
|
|
177
234
|
}
|
|
178
235
|
else {
|
|
236
|
+
// Get fresh metadata and cache it
|
|
179
237
|
const fresh = await this.getTableMetadataFresh(tableName);
|
|
180
238
|
if (fresh) {
|
|
181
239
|
metadata.push(fresh);
|
|
@@ -188,10 +246,14 @@ export class BaseConnector {
|
|
|
188
246
|
tableName,
|
|
189
247
|
error: error instanceof Error ? error.message : 'Unknown error'
|
|
190
248
|
});
|
|
249
|
+
// Continue without this table's metadata
|
|
191
250
|
}
|
|
192
251
|
}
|
|
193
252
|
return metadata;
|
|
194
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Convert cached schema to table metadata format
|
|
256
|
+
*/
|
|
195
257
|
convertCachedToTableMetadata(cached) {
|
|
196
258
|
return {
|
|
197
259
|
name: cached.tableName,
|
|
@@ -213,8 +275,13 @@ export class BaseConnector {
|
|
|
213
275
|
lastUpdated: cached.cachedAt
|
|
214
276
|
};
|
|
215
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Get fresh table metadata (to be overridden by specific connectors)
|
|
280
|
+
*/
|
|
216
281
|
async getTableMetadataFresh(tableName) {
|
|
282
|
+
// Default implementation - subclasses should override
|
|
217
283
|
try {
|
|
284
|
+
// Use internal row count to avoid validation recursion
|
|
218
285
|
const rowCount = await this.getRowCountInternal(tableName, false);
|
|
219
286
|
return {
|
|
220
287
|
name: tableName,
|
|
@@ -228,6 +295,9 @@ export class BaseConnector {
|
|
|
228
295
|
return null;
|
|
229
296
|
}
|
|
230
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Cache table metadata
|
|
300
|
+
*/
|
|
231
301
|
cacheTableMetadata(metadata) {
|
|
232
302
|
try {
|
|
233
303
|
const cachedSchema = {
|
|
@@ -238,7 +308,7 @@ export class BaseConnector {
|
|
|
238
308
|
type: col.type,
|
|
239
309
|
nullable: col.nullable,
|
|
240
310
|
indexed: col.indexed || false,
|
|
241
|
-
isPrimaryKey: false,
|
|
311
|
+
isPrimaryKey: false, // Would need specific detection
|
|
242
312
|
estimatedCardinality: col.cardinality
|
|
243
313
|
})),
|
|
244
314
|
indexes: metadata.indexes.map(idx => ({
|
|
@@ -246,7 +316,7 @@ export class BaseConnector {
|
|
|
246
316
|
columns: idx.columns,
|
|
247
317
|
unique: idx.unique,
|
|
248
318
|
type: idx.type ?? 'btree',
|
|
249
|
-
isPrimary: false,
|
|
319
|
+
isPrimary: false, // Would need specific detection
|
|
250
320
|
sizeBytes: undefined
|
|
251
321
|
})),
|
|
252
322
|
estimatedRows: metadata.estimatedRows,
|
|
@@ -283,6 +353,9 @@ export class BaseConnector {
|
|
|
283
353
|
});
|
|
284
354
|
}
|
|
285
355
|
}
|
|
356
|
+
/**
|
|
357
|
+
* Log query analysis results
|
|
358
|
+
*/
|
|
286
359
|
logQueryAnalysis(sql, analysis) {
|
|
287
360
|
const logData = {
|
|
288
361
|
sqlPreview: sql.substring(0, 100),
|
|
@@ -313,6 +386,9 @@ export class BaseConnector {
|
|
|
313
386
|
});
|
|
314
387
|
}
|
|
315
388
|
}
|
|
389
|
+
/**
|
|
390
|
+
* Get reason why query was blocked
|
|
391
|
+
*/
|
|
316
392
|
getBlockingReason(analysis) {
|
|
317
393
|
const reasons = [];
|
|
318
394
|
if (analysis.riskScore > this.queryAnalyzer.getConfig().maxRiskScore) {
|
|
@@ -332,15 +408,23 @@ export class BaseConnector {
|
|
|
332
408
|
}
|
|
333
409
|
return reasons.join(', ') || 'security policy violation';
|
|
334
410
|
}
|
|
411
|
+
/**
|
|
412
|
+
* Escape SQL identifiers to prevent injection
|
|
413
|
+
*/
|
|
335
414
|
escapeIdentifier(identifier) {
|
|
415
|
+
// Only allow alphanumeric, underscore, and dot (for schema.table)
|
|
336
416
|
if (!/^[a-zA-Z0-9_.]+$/.test(identifier)) {
|
|
337
417
|
throw new SecurityError(`Invalid identifier: ${identifier}`);
|
|
338
418
|
}
|
|
419
|
+
// Additional length check
|
|
339
420
|
if (identifier.length > 256) {
|
|
340
421
|
throw new SecurityError('Identifier too long');
|
|
341
422
|
}
|
|
342
423
|
return identifier;
|
|
343
424
|
}
|
|
425
|
+
/**
|
|
426
|
+
* Execute function with timeout protection
|
|
427
|
+
*/
|
|
344
428
|
async executeWithTimeout(operation, timeoutMs) {
|
|
345
429
|
return Promise.race([
|
|
346
430
|
operation(),
|
|
@@ -351,11 +435,15 @@ export class BaseConnector {
|
|
|
351
435
|
})
|
|
352
436
|
]);
|
|
353
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* Sanitize error messages to prevent information leakage
|
|
440
|
+
*/
|
|
354
441
|
sanitizeError(error) {
|
|
355
442
|
if (!(error instanceof Error)) {
|
|
356
443
|
return 'Unknown error occurred';
|
|
357
444
|
}
|
|
358
445
|
const message = error.message.toLowerCase();
|
|
446
|
+
// Map specific error types to safe messages
|
|
359
447
|
if (message.includes('connection refused')) {
|
|
360
448
|
return 'Connection failed - check host and port';
|
|
361
449
|
}
|
|
@@ -371,14 +459,25 @@ export class BaseConnector {
|
|
|
371
459
|
if (message.includes('syntax error')) {
|
|
372
460
|
return 'Invalid query syntax';
|
|
373
461
|
}
|
|
462
|
+
// Generic message for unknown errors (don't leak database details)
|
|
374
463
|
return 'Database operation failed';
|
|
375
464
|
}
|
|
465
|
+
// ==============================================
|
|
466
|
+
// Secure Implementation of Connector Interface
|
|
467
|
+
// ==============================================
|
|
468
|
+
/**
|
|
469
|
+
* Get row count for a table using parameterized query
|
|
470
|
+
*/
|
|
376
471
|
async getRowCount(table) {
|
|
377
472
|
return this.getRowCountInternal(table, true);
|
|
378
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* Internal row count method with optional validation
|
|
476
|
+
*/
|
|
379
477
|
async getRowCountInternal(table, validateQuery = true) {
|
|
380
478
|
const escapedTable = this.escapeIdentifier(table);
|
|
381
479
|
const sql = `SELECT COUNT(*) as count FROM ${escapedTable}`;
|
|
480
|
+
// Only validate if not being called for internal metadata purposes
|
|
382
481
|
if (validateQuery) {
|
|
383
482
|
await this.validateQuery(sql, [table]);
|
|
384
483
|
}
|
|
@@ -402,13 +501,20 @@ export class BaseConnector {
|
|
|
402
501
|
});
|
|
403
502
|
}, { table, operation: 'getRowCount' });
|
|
404
503
|
}
|
|
504
|
+
/**
|
|
505
|
+
* Get maximum timestamp value from a column
|
|
506
|
+
*/
|
|
405
507
|
async getMaxTimestamp(table, column) {
|
|
406
508
|
return this.getMaxTimestampInternal(table, column, true);
|
|
407
509
|
}
|
|
510
|
+
/**
|
|
511
|
+
* Internal max timestamp method with optional validation
|
|
512
|
+
*/
|
|
408
513
|
async getMaxTimestampInternal(table, column, validateQuery = true) {
|
|
409
514
|
const escapedTable = this.escapeIdentifier(table);
|
|
410
515
|
const escapedColumn = this.escapeIdentifier(column);
|
|
411
516
|
const sql = `SELECT MAX(${escapedColumn}) as max_date FROM ${escapedTable}`;
|
|
517
|
+
// Only validate if not being called for internal metadata purposes
|
|
412
518
|
if (validateQuery) {
|
|
413
519
|
await this.validateQuery(sql, [table]);
|
|
414
520
|
}
|
|
@@ -441,13 +547,20 @@ export class BaseConnector {
|
|
|
441
547
|
});
|
|
442
548
|
}, { table, column, operation: 'getMaxTimestamp' });
|
|
443
549
|
}
|
|
550
|
+
/**
|
|
551
|
+
* Get minimum timestamp value from a column
|
|
552
|
+
*/
|
|
444
553
|
async getMinTimestamp(table, column) {
|
|
445
554
|
return this.getMinTimestampInternal(table, column, true);
|
|
446
555
|
}
|
|
556
|
+
/**
|
|
557
|
+
* Internal min timestamp method with optional validation
|
|
558
|
+
*/
|
|
447
559
|
async getMinTimestampInternal(table, column, validateQuery = true) {
|
|
448
560
|
const escapedTable = this.escapeIdentifier(table);
|
|
449
561
|
const escapedColumn = this.escapeIdentifier(column);
|
|
450
562
|
const sql = `SELECT MIN(${escapedColumn}) as min_date FROM ${escapedTable}`;
|
|
563
|
+
// Only validate if not being called for internal metadata purposes
|
|
451
564
|
if (validateQuery) {
|
|
452
565
|
await this.validateQuery(sql, [table]);
|
|
453
566
|
}
|
|
@@ -481,9 +594,19 @@ export class BaseConnector {
|
|
|
481
594
|
throw new Error(this.sanitizeError(error));
|
|
482
595
|
}
|
|
483
596
|
}
|
|
597
|
+
/**
|
|
598
|
+
* Get last modified timestamp for a table
|
|
599
|
+
* Implementation varies by database type
|
|
600
|
+
*/
|
|
484
601
|
getLastModified(_table) {
|
|
602
|
+
// Default implementation - subclasses can override for database-specific methods
|
|
603
|
+
// For most databases, this would be the same as getting max of a timestamp column
|
|
604
|
+
// but specific implementations should override this
|
|
485
605
|
throw new Error('getLastModified must be implemented by subclass');
|
|
486
606
|
}
|
|
607
|
+
/**
|
|
608
|
+
* Validate that query results don't exceed max rows limit
|
|
609
|
+
*/
|
|
487
610
|
validateResultSize(results) {
|
|
488
611
|
if (results.length > this.maxRows) {
|
|
489
612
|
this.logger.error('Query returned too many rows', {
|
|
@@ -500,6 +623,9 @@ export class BaseConnector {
|
|
|
500
623
|
});
|
|
501
624
|
}
|
|
502
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* Helper method for specific connectors to log operations with consistent format
|
|
628
|
+
*/
|
|
503
629
|
logOperation(operation, context) {
|
|
504
630
|
this.logger.info(`Database operation: ${operation}`, {
|
|
505
631
|
...context,
|
|
@@ -507,6 +633,9 @@ export class BaseConnector {
|
|
|
507
633
|
host: this.config.host
|
|
508
634
|
});
|
|
509
635
|
}
|
|
636
|
+
/**
|
|
637
|
+
* Helper method for specific connectors to log errors with consistent format
|
|
638
|
+
*/
|
|
510
639
|
logError(operation, error, context) {
|
|
511
640
|
this.logger.error(`Database operation failed: ${operation}`, error, {
|
|
512
641
|
...context,
|
|
@@ -514,37 +643,65 @@ export class BaseConnector {
|
|
|
514
643
|
host: this.config.host
|
|
515
644
|
});
|
|
516
645
|
}
|
|
646
|
+
/**
|
|
647
|
+
* Get schema cache statistics
|
|
648
|
+
*/
|
|
517
649
|
getSchemaCacheStats() {
|
|
518
650
|
return this.schemaCache.getStats();
|
|
519
651
|
}
|
|
652
|
+
/**
|
|
653
|
+
* Clear schema cache for testing or maintenance
|
|
654
|
+
*/
|
|
520
655
|
clearSchemaCache() {
|
|
521
656
|
this.schemaCache.clear();
|
|
522
657
|
}
|
|
658
|
+
/**
|
|
659
|
+
* Get query analyzer configuration
|
|
660
|
+
*/
|
|
523
661
|
getQueryAnalyzerConfig() {
|
|
524
662
|
return this.queryAnalyzer.getConfig();
|
|
525
663
|
}
|
|
664
|
+
/**
|
|
665
|
+
* Cleanup resources (should be called by subclasses in their close method)
|
|
666
|
+
*/
|
|
526
667
|
cleanup() {
|
|
527
668
|
this.schemaCache.stop();
|
|
528
669
|
}
|
|
670
|
+
/**
|
|
671
|
+
* Execute a parameterized SQL query (recommended for security)
|
|
672
|
+
* Subclasses should override this to use proper prepared statements
|
|
673
|
+
*/
|
|
529
674
|
async executeParameterizedQuery(sql, parameters = []) {
|
|
675
|
+
// Default implementation falls back to executeQuery for backward compatibility
|
|
676
|
+
// Subclasses should override this to use proper parameterized queries
|
|
530
677
|
if (parameters.length > 0) {
|
|
531
678
|
console.warn('Parameters provided but connector does not support parameterized queries. Consider upgrading connector implementation.');
|
|
532
679
|
}
|
|
533
680
|
return this.executeQuery(sql);
|
|
534
681
|
}
|
|
682
|
+
/**
|
|
683
|
+
* Helper method for subclasses to create debug-enabled error factory
|
|
684
|
+
*/
|
|
535
685
|
createDebugErrorFactory(debugConfig) {
|
|
536
686
|
const mergedConfig = mergeDebugConfig(debugConfig);
|
|
537
687
|
return new DebugErrorFactory(mergedConfig);
|
|
538
688
|
}
|
|
689
|
+
/**
|
|
690
|
+
* Helper method for subclasses to log debug information
|
|
691
|
+
*/
|
|
539
692
|
logDebugInfo(debugConfig, debugId, operation, context) {
|
|
540
693
|
if (debugConfig?.enabled) {
|
|
541
694
|
console.log(`[DEBUG-${debugId}] ${operation}:`, context);
|
|
542
695
|
}
|
|
543
696
|
}
|
|
697
|
+
/**
|
|
698
|
+
* Helper method for subclasses to log debug errors
|
|
699
|
+
*/
|
|
544
700
|
logDebugError(debugConfig, debugId, operation, context) {
|
|
545
701
|
if (debugConfig?.enabled) {
|
|
546
702
|
console.error(`[DEBUG-${debugId}] ${operation} failed:`, context);
|
|
547
703
|
}
|
|
548
704
|
}
|
|
549
705
|
}
|
|
706
|
+
// Error classes are now imported from ../errors/index.js
|
|
550
707
|
//# sourceMappingURL=base-connector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-connector.js","sourceRoot":"","sources":["../../src/connectors/base-connector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base-connector.js","sourceRoot":"","sources":["../../src/connectors/base-connector.ts"],"names":[],"mappings":"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"}
|