voyage-and-consumption-mcp-server
Version:
Voyage and consumption management server handling vessel voyages, fuel consumption, performance monitoring, and operational data with ERP access for data extraction
108 lines (107 loc) • 3.53 kB
TypeScript
/**
* Database Query Sanitizer Utility
*
* Provides specialized sanitization functions for database queries
* to prevent injection attacks and ensure query safety.
*
* This utility addresses critical security vulnerabilities identified
* in the existing codebase where user input was directly used in
* database queries without proper sanitization.
*/
export interface QuerySanitizationOptions {
allowRegex?: boolean;
maxDepth?: number;
allowedOperators?: string[];
maxStringLength?: number;
}
export declare class QuerySanitizer {
private static readonly DEFAULT_OPTIONS;
/**
* Sanitizes MongoDB filter queries
* @param filter - The filter object to sanitize
* @param options - Sanitization options
* @returns Sanitized filter object
*/
static sanitizeFilter(filter: any, options?: QuerySanitizationOptions): any;
/**
* Sanitizes MongoDB projection objects
* @param projection - The projection object to sanitize
* @returns Sanitized projection object
*/
static sanitizeProjection(projection: any): any;
/**
* Sanitizes MongoDB sort objects
* @param sort - The sort object to sanitize
* @returns Sanitized sort object
*/
static sanitizeSort(sort: any): any;
/**
* Sanitizes update operations
* @param update - The update object to sanitize
* @returns Sanitized update object
*/
static sanitizeUpdate(update: any): any;
/**
* Sanitizes Typesense query parameters
* @param query - The Typesense query object
* @returns Sanitized query object
*/
static sanitizeTypesenseQuery(query: any): any;
/**
* Sanitizes coordinate values for geo queries
* @param coordinates - Array of [longitude, latitude] or object with lat/lng
* @returns Sanitized coordinates
*/
static sanitizeCoordinates(coordinates: any): any;
/**
* Recursively sanitizes object properties
*/
private static sanitizeObjectRecursive;
/**
* Sanitizes individual values
*/
private static sanitizeValue;
/**
* Checks if an operator is allowed
*/
private static isAllowedOperator;
/**
* Sanitizes field names
*/
private static sanitizeFieldName;
/**
* Sanitizes projection operators
*/
private static sanitizeProjectionOperators;
/**
* Sanitizes projection operator values
*/
private static sanitizeProjectionOperatorValue;
/**
* Sanitizes update operation values
*/
private static sanitizeUpdateValue;
/**
* Validates query safety before execution
* @param query - Query to validate
* @returns True if safe, throws error if dangerous
*/
static validateQuerySafety(query: any): boolean;
/**
* Creates a safe regex query for text search
* @param text - Text to search for
* @param field - Field to search in
* @param caseInsensitive - Whether search should be case insensitive
* @returns Safe regex query object
*/
static createSafeTextSearch(text: string, field: string, caseInsensitive?: boolean): any;
/**
* Builds safe date range queries
* @param field - Date field name
* @param startDate - Start date (optional)
* @param endDate - End date (optional)
* @returns Safe date range query
*/
static createSafeDateRange(field: string, startDate?: string, endDate?: string): any;
}
export declare const querySanitizer: typeof QuerySanitizer;