vineguard-utils
Version:
Shared utilities for VineGuard - AI-powered testing orchestration
64 lines • 2.28 kB
TypeScript
/**
* Security utilities for VineGuard
* Provides input sanitization, validation, and security configuration
*/
export interface SecurityConfig {
maxFileSize: number;
allowedFileExtensions: string[];
maxPathDepth: number;
allowedProtocols: string[];
rateLimits: {
maxRequestsPerMinute: number;
maxRequestsPerHour: number;
};
timeouts: {
defaultTimeoutMs: number;
maxTimeoutMs: number;
};
}
export declare const DEFAULT_SECURITY_CONFIG: SecurityConfig;
export declare class InputSanitizer {
private static readonly HTML_ESCAPE_MAP;
private static readonly SQL_INJECTION_PATTERNS;
private static readonly SCRIPT_INJECTION_PATTERNS;
static sanitizeHtml(input: string): string;
static sanitizePath(input: string): string;
static detectSqlInjection(input: string): boolean;
static detectScriptInjection(input: string): boolean;
static sanitizeCommand(input: string): string;
static sanitizeEnvironmentValue(input: string): string;
}
export declare class SecurityValidator {
private static config;
static setConfig(config: Partial<SecurityConfig>): void;
static getConfig(): SecurityConfig;
static validateFileSize(size: number): void;
static validateFileExtension(filename: string): void;
static validatePathDepth(filePath: string): void;
static validateUrl(url: string): void;
static validateTimeout(timeoutMs: number): void;
private static isPrivateIP;
}
export declare class RateLimiter {
private static requests;
private static hourlyRequests;
static isAllowed(identifier: string): boolean;
private static cleanup;
static getRemainingRequests(identifier: string): {
minute: number;
hour: number;
};
}
export declare class EnvValidator {
static validateRequired(envVars: string[]): void;
static sanitizeEnvVar(value: string | undefined): string | undefined;
static validateAndSanitize(envVars: Record<string, {
required?: boolean;
sanitize?: boolean;
}>): Record<string, string | undefined>;
}
export declare class ProductionSecurity {
static performSecurityChecks(): void;
static getSecurityHeaders(): Record<string, string>;
}
//# sourceMappingURL=security.d.ts.map