nehonix-uri-processor
Version:
A powerful URI processor for encoding, decoding, and analyzing URI data securely.
55 lines • 1.85 kB
TypeScript
import { DetectedPattern, MaliciousPatternOptions, MaliciousPatternResult } from "../../services/MaliciousPatterns.service";
import type { Request, Response } from "express";
export interface NsbMiddlewareOptions extends MaliciousPatternOptions {
blockOnMalicious?: boolean;
logDetails?: boolean;
automaticBlocking?: boolean;
customBlockHandler?: (req: Request, res: Response, result: MaliciousPatternResult) => void;
scoreThreshold?: number;
bypassHeader?: string;
bypassToken?: string;
enableRateLimit?: boolean;
rateLimit?: {
windowMs?: number;
maxRequests?: number;
message?: string | object;
};
scanComponents?: ("url" | "headers" | "query" | "body")[];
ipBlacklist?: string[];
ipWhitelist?: string[];
transformResponse?: boolean;
secureHeaders?: boolean;
}
/**
* Security event interface for logging security-related actions
*/
export interface SecurityEvent {
timestamp: number;
type: "block" | "warning" | "suspicious" | "rate_limit" | "bypass";
ip: string;
url?: string;
method?: string;
score?: number;
patterns?: DetectedPattern[];
details?: any;
}
/**
* Database adapter interface for persistent storage
*/
export interface SecurityDatabaseAdapterType {
trackSuspiciousIP: (ip: string, details: any) => Promise<void>;
getSuspiciousIPs: () => Promise<Array<{
ip: string;
count: number;
lastSeen: number;
details?: any;
}>>;
blockIP: (ip: string, reason: string) => Promise<boolean>;
isIPBlocked: (ip: string) => Promise<boolean>;
saveSecurityEvent: (event: SecurityEvent) => Promise<void>;
getSecurityEvents: (options: {
startDate: Date;
endDate: Date;
}) => Promise<SecurityEvent[]>;
}
//# sourceMappingURL=types.express.middleware.d.ts.map