Skip to content

fix(phoenix): params scrubbing for LV#1048

Closed
solnic wants to merge 2 commits intorefa/extract-scrubberfrom
fix/liveview-params-scrubbing
Closed

fix(phoenix): params scrubbing for LV#1048
solnic wants to merge 2 commits intorefa/extract-scrubberfrom
fix/liveview-params-scrubbing

Conversation

@solnic
Copy link
Copy Markdown
Collaborator

@solnic solnic commented May 5, 2026

This extracts a scrubber API to a re-usable module and uses it in the live view too.

@solnic solnic force-pushed the fix/liveview-params-scrubbing branch from feeb823 to 66d3319 Compare May 5, 2026 10:18
@solnic solnic added this to the 13.0.2 milestone May 5, 2026
@solnic solnic force-pushed the fix/liveview-params-scrubbing branch from 66d3319 to 32c9ab8 Compare May 6, 2026 10:22
@solnic solnic changed the base branch from master to refa/extract-scrubber May 6, 2026 10:25
@solnic solnic force-pushed the refa/extract-scrubber branch from c9388da to ee7d131 Compare May 6, 2026 10:52
@solnic solnic mentioned this pull request May 6, 2026
@solnic solnic force-pushed the fix/liveview-params-scrubbing branch from 32c9ab8 to 50014e0 Compare May 6, 2026 11:04
solnic and others added 2 commits May 7, 2026 07:23
* feat(scrubber): introduce shared Sentry.Scrubber module

Adds a framework-agnostic module that owns the canonical default sensitive
key lists, the redaction placeholder, the credit-card detection heuristic,
and the recursive map/list traversal used to scrub data before it is sent
to Sentry. Existing integrations duplicate these primitives today; this
module provides a single source of truth that follow-up commits will route
PlugContext, PlugCapture, and LiveViewHook through.

The default behavior matches the existing Sentry.PlugContext defaults
("*********" placeholder, ["password", "passwd", "secret"] for params,
["authorization", "authentication", "cookie"] for headers) so no
existing scrubbing output changes.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor(plug_context): delegate default scrubbers to Sentry.Scrubber

Removes the duplicated denylist constants, placeholder, credit-card
regex, and recursive scrub_map/scrub_list helpers from
Sentry.PlugContext in favor of the shared Sentry.Scrubber module.
Public function signatures and the documented default key sets are
unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sentry.LiveViewHook previously stored raw event params, handle_params
params, and URIs directly in breadcrumbs. Form submissions over the
LiveView WebSocket frequently contain passwords, tokens, and other
secrets, which were forwarded to Sentry unredacted.

The hook now passes breadcrumb data through Sentry.Scrubber.scrub_map/2
and URIs through Sentry.Scrubber.scrub_url/2 before adding them to the
breadcrumb trail. Users can override the scrubber by passing a
{module, function, args} tuple via on_mount opts, mirroring the
override mechanism already provided by Sentry.PlugCapture:

    on_mount {Sentry.LiveViewHook, scrubber: {MyApp.Scrubber, :scrub, []}}

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@solnic solnic force-pushed the fix/liveview-params-scrubbing branch from 50014e0 to 9c47687 Compare May 7, 2026 05:54
@solnic
Copy link
Copy Markdown
Collaborator Author

solnic commented May 7, 2026

Gotta open a new PR. GH got stuck changing base branch 🙄
image

@solnic solnic closed this May 7, 2026
@solnic solnic deleted the fix/liveview-params-scrubbing branch May 7, 2026 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant