TsgcWebSocketFirewall › Events › OnViolation
Si attiva quando il firewall rileva una specifica violazione della sicurezza.
property OnViolation: TsgcFirewallOnViolation;
// TsgcFirewallOnViolation = procedure(Sender: TObject; const aIP: string; const aViolationType: TsgcFirewallViolationType; const aDetails: string) of object
—
OnViolation viene generato ogni volta che un modulo di protezione (blacklist/whitelist, forza bruta, limite di frequenza, flood, SQL injection, XSS, path traversal, command injection, GeoIP, dimensione payload, origine, dimensione frame, punteggio di minaccia o regola personalizzata) rileva un pattern corrispondente o una violazione di una regola. aIP è l'indirizzo IP del client in violazione, aViolationType identifica il modulo che ha generato l'evento (TsgcFirewallViolationType: fvBlacklist, fvWhitelist, fvBruteForce, fvRateLimit, fvFlood, fvSQLInjection, fvXSS, fvGeoIP, fvPathTraversal, fvCommandInjection, fvPayloadSize, fvOrigin, fvFrameSize, fvThreatScore, fvCustomRule), e aDetails è un breve messaggio descrittivo. Una violazione precede in genere un evento OnFiltered per la stessa richiesta e incrementa il punteggio di minaccia dell'IP quando ThreatScore è abilitato. Utilizzare questo evento per alimentare pipeline SIEM/log. Il gestore viene eseguito nel thread I/O del server; non eseguire operazioni di lunga durata al suo interno.
procedure TForm1.sgcWebSocketFirewall1Violation(Sender: TObject;
const aIP: string; const aViolationType: TsgcFirewallViolationType;
const aDetails: string);
var
vKind: string;
begin
case aViolationType of
fvBlacklist: vKind := 'Blacklist';
fvBruteForce: vKind := 'BruteForce';
fvRateLimit: vKind := 'RateLimit';
fvFlood: vKind := 'Flood';
fvSQLInjection: vKind := 'SQLInjection';
fvXSS: vKind := 'XSS';
fvGeoIP: vKind := 'GeoIP';
fvPathTraversal: vKind := 'PathTraversal';
fvCommandInjection: vKind := 'CommandInjection';
fvPayloadSize: vKind := 'PayloadSize';
fvThreatScore: vKind := 'ThreatScore';
fvCustomRule: vKind := 'CustomRule';
else
vKind := 'Other';
end;
Memo1.Lines.Add(Format('[%s] %s — %s', [aIP, vKind, aDetails]));
end;