import type { Context } from '../context.js'; export interface SecurityOptions { contentSecurityPolicy?: string | boolean; hsts?: { maxAge?: number; includeSubDomains?: boolean; preload?: boolean; }; noSniff?: boolean; frameOptions?: 'DENY' | 'SAMEORIGIN' | 'ALLOW-FROM'; xssProtection?: boolean; sanitizeInput?: boolean; maxBodySize?: number; csrf?: { secret?: string; cookieName?: string; headerName?: string; } | boolean; enforceCSRFInProduction?: boolean; logSecurityEvents?: boolean; customChecks?: Array<(ctx: Context) => Promise>; } export interface SecurityEvent { type: 'suspicious_request' | 'csrf_violation' | 'xss_attempt' | 'large_payload' | 'invalid_input'; timestamp: number; ip: string; userAgent?: string; url: string; details: any; } /** * Comprehensive security middleware plugin * Provides multiple layers of security protection */ export declare function security(options?: SecurityOptions): (ctx: Context, next: () => Promise) => Promise; /** * Generate CSRF token (utility function) */ export declare function generateCSRFToken(secret?: string): string; /** * Set CSRF cookie (utility function) */ export declare function setCSRFCookie(ctx: Context, token: string, cookieName?: string): void; /** * Security middleware presets */ export declare const securityPresets: { development: { contentSecurityPolicy: string; hsts: boolean; logSecurityEvents: boolean; enforceCSRFInProduction: boolean; }; production: { contentSecurityPolicy: string; hsts: { maxAge: number; includeSubDomains: boolean; preload: boolean; }; csrf: { secret: string; }; enforceCSRFInProduction: boolean; logSecurityEvents: boolean; }; api: { contentSecurityPolicy: boolean; hsts: { maxAge: number; includeSubDomains: boolean; }; csrf: { secret: string; }; enforceCSRFInProduction: boolean; sanitizeInput: boolean; maxBodySize: number; }; }; /** * Example usage: * * import { security, securityPresets } from 'openspeed/plugins/security'; * * // Use preset * app.use(security(securityPresets.production)); * * // Custom configuration * app.use(security({ * contentSecurityPolicy: "default-src 'self'", * csrf: { secret: process.env.CSRF_SECRET }, * customChecks: [ * async (ctx) => { * // Custom security check * if (ctx.req.headers['x-api-key'] !== process.env.API_KEY) { * return { error: 'Invalid API key', status: 401 }; * } * return true; * } * ] * })); */ //# sourceMappingURL=security.d.ts.map