UNPKG

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
/** * 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;