P1 privacy: EXIF and other metadata are not stripped from processed images #82
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Verified against
mainat61f42e6. This is the "strip EXIF and other metadata from processed images (privacy)" P1 item inTODO.md; confirmed genuinely missing —grepforStripMetadataacross the repo returns nothing, andencode(internal/imageprocessor/imageprocessor.go:334-380) never sets a strip option.libvips preserves metadata through a transform by default, so pixa currently re-publishes whatever the upstream image carried: GPS coordinates, camera serial numbers, capture timestamps, software fingerprints, and in some cases embedded thumbnails that can differ from the visible image.
This matters more for a proxy than for an ordinary encoder. An operator putting pixa in front of user-uploaded content reasonably assumes a resize strips incidental metadata, and nothing in the docs says otherwise. The embedded-thumbnail case is the sharp edge: a cropped image can leak the uncropped original.
Definition of done
encode.format=origpassthrough (no transform) is decided explicitly: it is arguably a byte-for-byte proxy of the source, in which case it keeps metadata — but that must be a documented decision, not an accident. Document whichever way it goes.make checkgreen.Note
A test fixture with real EXIF is needed. Keep it small — repo policy caps total repository size, and test media is one of the few things allowed to be committed, so choose a minimal image rather than a camera original.