Statt manueller SecRuleRemoveById-IDs kann man pro Domain offizielle OWASP-CRS- Exclusion-Plugins aktivieren — pfad-genaue, upstream-gepflegte App-Ausnahmen. - Migration 0046: waf_configs.crs_plugins text[]. - Engine (engine.go): je gewähltem Plugin werden config/before VOR den CRS-Rules und after DANACH inkludiert (exakt nach OWASP-CRS-Plugin-Spec); nur die für DIESE Domain gewählten, nur wenn die Datei existiert. Whitelist KnownCRSPlugins. - Handler: crs_plugins im Upsert-Body + Whitelist-Validierung (Include-Pfad- Injection-Schutz). - Packaging (postinst): lädt die Plugins (coreruleset/<name>-plugin) nach <crs>/plugins/ — self-healing auf jedem configure, nur fehlende. - UI: Multi-Select „App-Profile (CRS-Plugins)" im WAF-Config-Drawer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
818 B
SQL
20 lines
818 B
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
|
|
-- CRS-App-Exclusion-Plugins pro Domain (OWASP-CRS-Plugin-System). Liste von
|
|
-- Plugin-Namen (z. B. 'nextcloud','wordpress','drupal'). Der WAF-Renderer
|
|
-- inkludiert je gewähltem Plugin dessen config/before/after-Dateien aus
|
|
-- <crsDir>/plugins/ an den korrekten Punkten (config+before VOR den CRS-Rules,
|
|
-- after DANACH) → pfad-genaue, upstream-gepflegte App-Ausnahmen statt manueller
|
|
-- SecRuleRemoveById-IDs. waf_configs ist repliziert; der Renderer läuft pro
|
|
-- Node lokal, daher kein Cross-Node-Effekt außer der Config selbst.
|
|
ALTER TABLE waf_configs
|
|
ADD COLUMN IF NOT EXISTS crs_plugins TEXT[] NOT NULL DEFAULT '{}';
|
|
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
ALTER TABLE waf_configs DROP COLUMN IF EXISTS crs_plugins;
|
|
-- +goose StatementEnd
|