UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks

81 lines (80 loc) 2.46 kB
import { OperationKind } from "./api/Event"; type OperationCompressedTimings = { averageInMS: number; percentiles: Record<string, number>; compressedAt: number; }; type OperationStats = { kind: OperationKind; withoutContext: number; total: number; durations: number[]; compressedTimings: OperationCompressedTimings[]; interceptorThrewError: number; attacksDetected: { total: number; blocked: number; }; }; type OperationStatsWithoutTimings = Omit<OperationStats, "durations">; type UserAgentBotKey = string; type IPListKey = string; export declare class InspectionStatistics { private startedAt; private operations; private readonly maxPerfSamplesInMemory; private readonly maxCompressedStatsInMemory; private sqlTokenizationFailures; private requests; private userAgents; private ipAddresses; constructor({ maxPerfSamplesInMemory, maxCompressedStatsInMemory, }: { maxPerfSamplesInMemory: number; maxCompressedStatsInMemory: number; }); hasCompressedStats(): boolean; isEmpty(): boolean; reset(): void; getStats(): { operations: Record<string, OperationStatsWithoutTimings>; startedAt: number; sqlTokenizationFailures: number; requests: { total: number; aborted: number; rateLimited: number; attacksDetected: { total: number; blocked: number; }; }; userAgents: { breakdown: Record<string, number>; }; ipAddresses: { breakdown: Record<string, number>; }; }; private ensureOperationStats; private compressPerfSamples; interceptorThrewError(operation: string, kind: OperationKind): void; onDetectedAttack({ blocked }: { blocked: boolean; }): void; onIPAddressMatches(matches: IPListKey[]): void; onUserAgentMatches(matches: UserAgentBotKey[]): void; onAbortedRequest(): void; onRequest(): void; onRateLimitedRequest(): void; onInspectedCall({ operation, kind, blocked, attackDetected, durationInMs, withoutContext, }: { operation: string; kind: OperationKind; durationInMs: number; attackDetected: boolean; blocked: boolean; withoutContext: boolean; }): void; forceCompress(): void; onSqlTokenizationFailure(): void; } export {};