HTTP target destination URL is rendered in full and can itself be a bearer credential #115
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?
Surfaced while implementing #113, which masks the Slack target's webhook URL because it is a bearer credential.
The same property holds for
httptargets: a destination URL is frequently a Slack, Discord or Teams incoming-webhook endpoint, where the path segments are the secret. #113's done-criteria explicitly require showing thehttpdestination URL as a labelled field, so it ships rendered in full — deliberate, and out of scope there, but it leaves the leak reachable via a different target type.Needs your call, because masking unconditionally costs real usability: the destination is the one field an operator most needs to read back.
Options:
maskURLfrominternal/delivery/target_config_view.go(scheme://host/...).Recommendation: option 1. It is the same rule already applied to Slack, needs no heuristic that can be wrong in both directions, and the full value stays available in the edit form where it is actually needed.
Done-criteria once decided: a handler test asserting a secret-bearing
httpdestination does not render its path segments on the source detail page.