mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-27 08:38:58 +00:00
cf89291898
fix(notify): strip rustfs/minio internal metadata from event userMetadata (backlog#964) Notification event construction only stripped keys prefixed with `x-amz-meta-internal-`, which is not a prefix RustFS actually uses. Real internal metadata lives under `x-rustfs-internal-*` / `x-minio-internal-*` (xl.meta compat, incl. `x-minio-internal-server-side-encryption-*`) and server-side-encryption details under `x-rustfs-encryption-*` / `x-minio-encryption-*`. None of these were filtered, so they leaked into `s3.object.userMetadata` sent to downstream notification targets (webhook/MQ) — an information disclosure of SSE/replication/healing internal state. Filter via the shared classifiers `rustfs_utils::http::is_internal_key` and `is_encryption_metadata_key` (case-insensitive, covering both key flavors), while retaining the legacy `x-amz-meta-internal-*` strip for backward compat. Genuine user metadata (`x-amz-meta-*`, content-type, ...) is preserved unchanged. Adds a regression test asserting both internal prefixes, the SSE internal key, both encryption prefixes (incl. mixed-case) and the legacy prefix are stripped while user keys survive. Refs: https://github.com/rustfs/backlog/issues/964