/** * Security utility functions for preventing prototype pollution and other vulnerabilities */ /** * List of property names that should never be used as object keys * to prevent prototype pollution attacks */ export declare const FORBIDDEN_KEYS: readonly ["__proto__", "constructor", "prototype"]; /** * Validates that a property key is safe to use (not a prototype pollution vector) * @param key The property key to validate * @param context Optional context for the error message (e.g., "path" or "section") * @throws Error if the key is forbidden */ export declare function validatePropertyKey(key: string, context?: string): void; /** * Validates all keys in a dot-notation path * @param path Dot-notation path (e.g., "user.settings.theme") * @param context Optional context for the error message (e.g., "path" or "section") * @throws Error if any key in the path is forbidden */ export declare function validatePropertyPath(path: string, context?: string): void; /** * Safely sets a property on an object using Object.defineProperty * to prevent prototype pollution * @param target The target object * @param key The property key * @param value The value to set */ export declare function safeSetProperty(target: any, key: string, value: any): void; /** * Creates a new object without prototype chain (using Object.create(null)) * This prevents prototype pollution attacks on newly created objects * @returns A new object with no prototype */ export declare function createSafeObject(): Record; /** * Safely checks if an object has a property without traversing the prototype chain * @param target The target object * @param key The property key to check * @returns true if the object has the property, false otherwise */ export declare function safeHasOwnProperty(target: any, key: string): boolean; /** * Safely navigates an object path, creating intermediate objects as needed * All created objects are prototype-less to prevent pollution * @param root The root object to navigate * @param path Dot-notation path (e.g., "user.settings.theme") * @returns The final object in the path where the value should be set */ export declare function safeNavigateObject(root: any, path: string): any; /** * Safely sets a value at a dot-notation path in an object * @param root The root object * @param path Dot-notation path (e.g., "user.settings.theme") * @param value The value to set */ export declare function safeSetPath(root: any, path: string, value: any): void; //# sourceMappingURL=securityUtils.d.ts.map