TsgcWebSocketFirewallEvents › OnViolation

OnViolation Evento

Si attiva quando il firewall rileva una specifica violazione della sicurezza.

Sintassi

property OnViolation: TsgcFirewallOnViolation;
// TsgcFirewallOnViolation = procedure(Sender: TObject; const aIP: string; const aViolationType: TsgcFirewallViolationType; const aDetails: string) of object

Valore predefinito

Note

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.

Esempio

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;

Torna agli Eventi